1# SharedArrayBuffer对象 2 3SharedArrayBuffer内部包含一块Native内存,其JS对象壳被分配在虚拟机本地堆(LocalHeap)。支持跨并发实例间共享,但是访问及修改需要采用Atomics类,防止数据竞争。SharedArrayBuffer可以用于多个并发实例间的状态共享或者数据共享。通信过程如下图所示: 4 5 6 7 8## 使用示例 9 10这里提供了一个简单示例,使用TaskPool传递一个Int32Array对象,具体实现如下: 11 12```ts 13import { taskpool } from '@kit.ArkTS'; 14 15@Concurrent 16function transferAtomics(arg1: Int32Array) { 17 console.info("wait begin::"); 18 // 使用Atomics进行操作 19 let res = Atomics.wait(arg1, 0, 0, 3000); 20 return res; 21} 22 23// 定义可共享对象 24let sab: SharedArrayBuffer = new SharedArrayBuffer(20); 25let int32 = new Int32Array(sab); 26let task: taskpool.Task = new taskpool.Task(transferAtomics, int32); 27taskpool.execute(task).then((res) => { 28 console.info("this res is: " + res); 29}); 30setTimeout(() => { 31 Atomics.notify(int32, 0, 1); 32}, 1000); 33```