HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
View in English Always switch to English
This feature is well established and works across many devices and browser versions. It’s been available across browsers since декабрь 2021 г..
* Some parts of this feature may have varying levels of support.
Объект Atomics предоставляет атомарные операции как статические методы. Используется вместе с объектом SharedArrayBuffer.
Atomics
SharedArrayBuffer
Атомарные операции установлены в модуле Atomics. В отличие от других глобальных объектов, Atomics не является конструктором. Его нельзя использовать вместе с оператором new или вызывать объект Atomics как функцию. Все свойства и методы Atomics статические (как у объекта Math, к примеру).
new
Math
Atomics[Symbol.toStringTag]
Значение этого свойства - "Atomics".
Когда память разделена, несколько потоков могут читать и записывать одни и те же данные в память. Атомарные операции гарантируют, что ожидаемые значения будут записаны и прочитаны, а операции завершены, прежде чем следующая операция начнёт свою работу, и они не будут прерваны.
Atomics.add()
Добавляет представленное значение к текущему по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.
Atomics.and()
Вычисляет побитовое AND в указанной позиции массива. Возвращает предыдущее значение в этой позиции.
Atomics.compareExchange()
Сохраняет представленное значение в указанную позицию массива, если оно эквивалентно представленному значению. Возвращает предыдущее значение.
Atomics.exchange()
Сохраняет представленное значение в указанную позицию массива. Возвращает предыдущее значение.
Atomics.load()
Возвращает значение из указанной позиции массива.
Atomics.or()
Вычисляет побитовое OR в указанной позиции массива. Возвращает предыдущее значение в этой позиции.
Atomics.store()
Сохраняет представленное значение в указанную позицию массива. Возвращает значение.
Atomics.sub()
Вычитает представленное значение из текущего по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.
Atomics.xor()
Вычисляет побитовое XOR в указанной позиции массива. Возвращает предыдущее значение в этой позиции.
wait() и wake() методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определённое состояние не станет true, и обычно используется как блокирующие конструкции.
wait()
wake()
Atomics.wait()
Проверяет, содержится в указанной позиции массива все ещё представленное значение и спит в ожидании или тайм-аут. Возвращает "ok", "not-equal" или "timed-out". Если ожидание не разрешено в вызывающем агенте, тогда выбросит ошибку исключения (большинство браузеров не разрешают wait() в главном потоке браузера).
"ok"
"not-equal"
"timed-out"
Atomics.wake()
Пробуждает некоторых агентов, которые спят в очереди ожидания в указанной позиции массива. Возвращает количество агентов, которые были разбужены.
Atomics.isLockFree(size)
Оптимизационный примитив, который может быть использован для определения использовать ли блокирующие операции или атомарные. Возвращает true, если атомарные операции над массивами с указанным размерами элементов будут выполнены с использованием аппаратных атомарных операций (как противоположность блокирующим). Только для специалистов.
true
Enable JavaScript to view this browser compatibility table.
До SpiderMonkey 48, финальные имена API и семантика не были ещё реализованы. Изменения между Firefox v. 46 и v. 48:
Atomics.futexWakeOrRequeue()
Atomics.fence()
Atomics.futexWait()
Atomics.futexWake()
Atomics.OK
Atomics.TIMEDOUT
Atomics.NOTEQUAL
count
+Infinity
0
ArrayBuffer