Spec-Zone.ru › JavaScript

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);

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-atomics.notify

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
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

См. также

  • Atomics
  • Atomics.wait()
  • Atomics.waitAsync()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API