The Atomics object provides atomic operations as static methods. They are used with SharedArrayBuffer and ArrayBuffer objects.

Documentation Atomics by Mozilla Contributors, licensed under CC-BY-SA 2.5.

### Static methods

`staticadd(typedArray:IntTypedArray, index:Int, value:Int):Int`

Adds the provided value to the existing value at the specified index of the array. Returns the old value at that index. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticand(typedArray:IntTypedArray, index:Int, value:Int):Int`

Computes a bitwise AND on the value at the specified index of the array with the provided value. Returns the old value at that index. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticcompareExchange(typedArray:IntTypedArray, index:Int, expectedValue:Int, replacementValue:Int):Int`

Stores a value at the specified index of the array, if it equals a value. Returns the old value. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticexchange(typedArray:IntTypedArray, index:Int, value:Int):Int`

Stores a value at the specified index of the array. Returns the old value. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticisLockFree(size:Int):Bool`

An optimization primitive that can be used to determine whether to use locks or atomic operations.
Returns `true`

if an atomic operation on arrays of the given element size will be implemented using a hardware atomic operation (as opposed to a lock). Experts only.

`staticload(typedArray:IntTypedArray, index:Int):Int`

Returns the value at the specified index of the array. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticnotify(typedArray:IntTypedArray, index:Int, ?count:Int):Int`

Notifies agents that are waiting on the specified index of the array. Returns the number of agents that were notified.

`staticor(typedArray:IntTypedArray, index:Int, value:Int):Int`

Computes a bitwise OR on the value at the specified index of the array with the provided value. Returns the old value at that index. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticstore(typedArray:IntTypedArray, index:Int, value:Int):Int`

Stores a value at the specified index of the array. Returns the value. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticsub(typedArray:IntTypedArray, index:Int, value:Int):Int`

Subtracts a value at the specified index of the array. Returns the old value at that index. This atomic operation guarantees that no other write happens until the modified value is written back.

`staticwait(typedArray:Int32Array, index:Int, value:Int, ?timeout:Int):WaitValue`

Verifies that the specified index of the array still contains a value and sleeps awaiting or times out. Returns either "ok", "not-equal", or "timed-out". If waiting is not allowed in the calling agent then it throws an Error exception. Most browsers will not allow wait() on the browser's main thread.)