Atomics.notify()
Atomics.notify() 靜態方法會喚醒等待佇列中處於睡眠狀態的某些代理。
注意:此操作僅適用於檢視 SharedArrayBuffer 的 Int32Array 或 BigInt64Array。在非共享 ArrayBuffer 物件上,它將返回 0。
語法
js
Atomics.notify(typedArray, index, count)
引數
typedArray-
一個檢視
SharedArrayBuffer的Int32Array或BigInt64Array。 index-
在
typedArray中喚醒的**位置**。 count可選-
要通知的睡眠代理的**數量**。預設為
Infinity。
返回值
返回被喚醒的代理的數量,如果 typedArray 是非共享 ArrayBuffer 的檢視,則返回 0。
異常
TypeError-
如果
typedArray不是Int32Array或BigInt64Array,則會**丟擲**此錯誤。 RangeError-
如果
index在typedArray中超出界限,則丟擲。
示例
使用 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 |
瀏覽器相容性
載入中…