Atomics.notify()

Baseline 已廣泛支援

此功能已成熟,可在多種裝置和瀏覽器版本上使用。自 2021 年 12 月以來,它已在所有瀏覽器中可用。

Atomics.notify() 靜態方法會喚醒等待佇列中處於睡眠狀態的某些代理。

注意:此操作僅適用於檢視 SharedArrayBufferInt32ArrayBigInt64Array。在非共享 ArrayBuffer 物件上,它將返回 0

語法

js
Atomics.notify(typedArray, index, count)

引數

typedArray

一個檢視 SharedArrayBufferInt32ArrayBigInt64Array

index

typedArray 中喚醒的**位置**。

count 可選

要通知的睡眠代理的**數量**。預設為 Infinity

返回值

返回被喚醒的代理的數量,如果 typedArray 是非共享 ArrayBuffer 的檢視,則返回 0

異常

TypeError

如果 typedArray 不是 Int32ArrayBigInt64Array,則會**丟擲**此錯誤。

RangeError

如果 indextypedArray 中超出界限,則丟擲。

示例

使用 notify

給定一個共享的 Int32Array

js
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);

讀取執行緒正在位置 0 上睡眠並等待,因為提供的 value 與在提供的 index 處儲存的值匹配。讀取執行緒在寫入執行緒呼叫所提供的 typedArray 的位置 0 上的 Atomics.notify() 之前不會繼續。請注意,如果被喚醒後,位置 0 的值沒有被寫入執行緒更改,讀取執行緒**不會**重新進入睡眠,而是會繼續執行。

js
Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123

寫入執行緒儲存一個新值,並在寫入後通知等待執行緒

js
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);

規範

規範
ECMAScript® 2026 語言規範
# sec-atomics.notify

瀏覽器相容性

另見