📜  JavaScript 中的 Atomics.store()(1)

📅  最后修改于: 2023-12-03 15:01:40.342000             🧑  作者: Mango

JavaScript 中的 Atomics.store()

在多线程环境下,JavaScript 为我们提供了 Atomics 对象来执行原子操作。其中的 Atomics.store() 方法可以原子性的将一个值存储到一个 SharedArrayBuffer 中的指定位置。

语法
Atomics.store(typedArray, index, value);

参数解释:

  • typedArray: 必选参数。指定要存储值的容器。只能传入 SharedArrayBuffer 对象。
  • index: 必选参数。指定要存储值的位置。
  • value: 必选参数。指定要存储的值。

注意: Atomics.store() 方法的 typedArray 参数必须是共享类型数组中的 Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, or Uint32Array。 否则会抛出 TypeError 异常。

返回值

返回存储之前在指定位置上的值。

示例
const buffer = new SharedArrayBuffer(4);
const view = new Int32Array(buffer);

Atomics.store(view, 0, 42);
console.log(Atomics.load(view, 0)); // expected output: 42

在上面的示例中,我们首先创建了一个长度为 4 的 SharedArrayBuffer,然后创建了一个 Int32Array 视图用于操作数据。接着,我们将值 42 存储在第 0 个位置上,并使用 Atomics.load() 方法来检查该位置上的值。

注意事项
  1. Atomics.store() 方法的执行是原子性的,不会中断。
  2. 如果在存储值之前有其他线程正在读取该值,那么其他线程在存储完成之前会一直等待。这种行为保证了存储的同步和一致性。
参考文献