Atomics.notify()
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в версиях браузеров. Она доступна во всех браузерах с декабря 2021 года.
Статический метод Atomics.notify() уведомляет некоторые агенты, которые спят в очереди ожидания.
Примечание: Эта операция работает только с Int32Array или BigInt64Array, которые просматривают SharedArrayBuffer. Она вернет 0 для общих ArrayBuffer объектов.
Синтаксис
Atomics.notify(typedArray, index, count)
Параметры
-
typedArray - Объект
Int32ArrayилиBigInt64Array, который просматриваетSharedArrayBuffer. -
index - Позиция в
typedArrayдля пробуждения. -
countНеобязательно - Количество спящих агентов для уведомления. По умолчанию используется
Infinity.
Возвращаемое значение
Возвращает количество разбуженных агентов или 0, если typedArray является представлением общего ArrayBuffer.
Исключения
-
TypeError - Выбрасывается, если
typedArrayне являетсяInt32ArrayилиBigInt64Array. -
RangeError - Выбрасывается, если
indexвыходит за пределыtypedArray.
Примеры
Обратите внимание, что эти примеры нельзя запускать напрямую из консоли или произвольной веб-страницы, поскольку SharedArrayBuffer не определено, если не выполнены его требования безопасности.
Использование Atomics.notify()
Дан общий Int32Array:
const sab = new SharedArrayBuffer(1024); const int32 = new Int32Array(sab);
Потоковая запись спит и ожидает по адресу 0, поскольку предоставленный value совпадает с тем, что хранится по предоставленному index. Потоковая запись не продолжит выполнение, пока потоковая запись не вызовет Atomics.notify() по позиции 0 предоставленного typedArray. Обратите внимание, что если после пробуждения значение адреса 0 не будет изменено потоковой записью, потоковая запись не вернется в спящий режим, а продолжит выполнение.
Atomics.wait(int32, 0, 0); console.log(int32[0]); // 123
Потоковая запись сохраняет новое значение и уведомляет ожидающий поток после завершения записи:
console.log(int32[0]); // 0; Atomics.store(int32, 0, 123); Atomics.notify(int32, 0, 1);
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
notify |
68 |
79 |
78 |
55 |
15.2 |
89 |
79 |
63 |
15.2 |
15.0 |
89 |
15.2 |
1.0.0 |
1.0 |
8.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/notify