Atomics.compareExchange()

简介: Atomics.compareExchange()

MDN文档

注意: 这是一个实验中的功能


Atomics.compareExchange() 静态方法会在数组的值与期望值相等的时候,将给定的替换值替换掉数组上的值,然后返回旧值。此原子操作保证在写上修改的值之前不会发生其他写操作。


语法

Atomics.compareExchange(typedArray, index, expectedValue, replacementValue)点击复制复制失败已复制


参数:

  • typedArray
    一个共享的整型 typed array 。例如 Int8ArrayUint8ArrayInt16ArrayUint16ArrayInt32Array ,或者 Uint32Array
  • index
    按位与操作的 typedArray 的值在数组上的索引
  • expectedValue
    用于比较的值
  • replacementValue
    将要替换上的值


返回值:

给定位置的旧值typedArray[index] )。


错误:

  • 假如 typedArray 不是允许的整型之一,则抛出 TypeError
  • 假如 typedArray 不是一个shared typed array类型,则抛出 TypeError
  • 如果 index 超出了 typedArray 的边界,则抛出 RangeError


示例

const sab = new SharedArrayBuffer(1024);
const ta = new Uint8Array(sab);
ta[0] = 7;
const old = Atomics.compareExchange(ta, 0, 7, 12);
console.log(old) // 7
const now = Atomics.load(ta, 0);
console.log(now) // 12
目录
相关文章
|
8月前
|
并行计算 Linux
export OMP_NUM_THREADS=(nproc--all)
export OMP_NUM_THREADS=(nproc--all) 是一条 Linux 命令,用于设置 OpenMP(一个用于并行编程的应用程序接口)使用的线程数。
314 7
Atomics.load()
Atomics.load()
148 1
|
索引
Atomics.sub()
Atomics.sub()
65 0
|
索引
Atomics.or()
Atomics.or()
59 0
Atomics.isLockFree()
Atomics.isLockFree()
81 0
|
存储
Atomics.store()
Atomics.store()
90 0
|
JavaScript 索引
Atomics.wait()
Atomics.wait()
256 0
|
索引
Atomics.and()
Atomics.and()
62 0
|
JavaScript 索引
Atomics.notify()
Atomics.notify()
223 0
|
索引
Atomics.xor()
Atomics.xor()
85 0