Atomics.notify()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.
Phương thức tĩnh Atomics.notify() thông báo cho một số tác nhân đang ngủ trong hàng đợi chờ.
Note:
Thao tác này chỉ hoạt động với Int32Array hoặc BigInt64Array xem một SharedArrayBuffer.
Nó sẽ trả về 0 trên các đối tượng ArrayBuffer không chia sẻ.
Cú pháp
Atomics.notify(typedArray, index, count)
Tham số
typedArray-
Một
Int32ArrayhoặcBigInt64Arrayxem mộtSharedArrayBuffer. index-
Vị trí trong
typedArrayđể đánh thức. countOptional-
Số tác nhân đang ngủ cần thông báo. Mặc định là
Infinity.
Giá trị trả về
Trả về số tác nhân đã được đánh thức, hoặc 0 nếu typedArray là view trên một ArrayBuffer không chia sẻ.
Ngoại lệ
TypeError-
Được ném ra nếu
typedArraykhông phải làInt32ArrayhoặcBigInt64Array. RangeError-
Được ném ra nếu
indexnằm ngoài giới hạn trongtypedArray.
Ví dụ
Lưu ý rằng các ví dụ này không thể chạy trực tiếp từ console hoặc một trang web tùy ý, vì SharedArrayBuffer không được định nghĩa trừ khi các yêu cầu bảo mật của nó được đáp ứng.
Sử dụng Atomics.notify()
Cho một Int32Array được chia sẻ:
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
Luồng đọc đang ngủ và chờ tại vị trí 0 vì value được cung cấp khớp với những gì được lưu tại index được cung cấp.
Luồng đọc sẽ không tiến lên cho đến khi luồng ghi đã gọi Atomics.notify() tại vị trí 0 của typedArray được cung cấp.
Lưu ý rằng nếu, sau khi được đánh thức, giá trị tại vị trí 0 không được thay đổi bởi luồng ghi, luồng đọc sẽ không quay lại ngủ, mà sẽ tiếp tục.
Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123
Luồng ghi lưu một giá trị mới và thông báo cho luồng đang chờ một khi đã ghi:
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-atomics.notify> |