SharedArrayBuffer对象
表示一个通用、固定长度的原始二进制数据缓冲区
可以在共享内存上创建视图,不能被分离
- 语法
new ShardArrayBuffer(length)
length:数据缓冲区的大小,以字节(byte)为单位
Atomics对象
提供一组静态方法对 ShardArrayBuffer 对象进行原子操作
Atomics 属性、方法都是静态
原子操作多线程同步执行
- 原子操作方法
Atomics.add(typedArray,idnex,value)
Atomics.add(typedArray,idnex,value)
给定值加到数组里某个指定位置,返回该位置的旧值
typedArray:整型的类型数组 Int8Array,Int16Array,Uint8Array
1 | let arr = new SharedArrayBuffer(16) |
Atomics.load(typedArray,index)
获取数组(view)中给定位置的值
Atomics.and(typedArray,index,value)
将给定的值与数组上的值进行按位与操作
Atomics.or(typedArray,index,value)
将给定的值与数组上的值进行按位或操作
Atomics.compareExchange(typedArray, index, expectedValue, replacementValue)
当指定位置的值等于 'expectedValue' 值的时候,用 'replacementValue' 替换 'expectedValue'
Atomics.exchange(typedArray, index, value)
替换指定位置的值
Atomics.sub(typedArray, index, value)
指定位置值减去 value
Atomics.wake(typedArray, index, count)
唤醒等待队列中休眠的某些代理
Atomics.wait(typedArray,index,value,[timeout])
验证 Int32Array 中的给定位置是否仍包含给定值, 如果休眠则等待唤醒或超时。它返回一个字符串, 可以是 “ok”、“不等于” 或 “超时”。