Atomics.notify()

基线 广泛可用

此功能已十分成熟,可在许多设备和浏览器版本中使用。它从 2021 年 12 月.

报告反馈

**Atomics.notify()** 静态方法通知在等待队列中休眠的某些代理。

语法

注意: 此操作仅适用于查看 SharedArrayBufferInt32ArrayBigInt64Array。对于非共享 ArrayBuffer 对象,它将返回 0
Atomics.notify(typedArray, index, count)

js

参数

typedArray

查看 SharedArrayBufferInt32ArrayBigInt64Array

index

typedArray 中唤醒的位置。

count 可选

要通知的休眠代理数量。默认为 Infinity

  • 返回值
  • 返回唤醒的代理数量。

如果使用的是非共享 ArrayBuffer 对象,则返回 0

异常

TypeError

如果 typedArray 不是查看 SharedArrayBufferInt32ArrayBigInt64Array,则抛出此异常。

RangeError

示例

如果 index 超出 typedArray 的范围,则抛出此异常。

使用 notify

注意: 此操作仅适用于查看 SharedArrayBufferInt32ArrayBigInt64Array。对于非共享 ArrayBuffer 对象,它将返回 0
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);

给定一个共享的 Int32Array

注意: 此操作仅适用于查看 SharedArrayBufferInt32ArrayBigInt64Array。对于非共享 ArrayBuffer 对象,它将返回 0
Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123

一个读取线程正在休眠并等待位置 0,该位置预计为 0。只要为真,它就不会继续。但是,一旦写入线程存储了新值,写入线程就会通知它,并返回新值 (123)。

注意: 此操作仅适用于查看 SharedArrayBufferInt32ArrayBigInt64Array。对于非共享 ArrayBuffer 对象,它将返回 0
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);

规范

一个写入线程存储了一个新值,并在写入后通知等待线程
规范
# ECMAScript 语言规范

浏览器兼容性

sec-atomics.notify

另请参阅