123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package js.lib;
- private typedef E<A, B> = haxe.extern.EitherType<A, B>;
- private typedef IntTypedArray = E<Int8Array, E<Uint8Array, E<Int16Array, E<Uint16Array, E<Int32Array, Uint32Array>>>>>;
- /**
- The Atomics object provides atomic operations as static methods. They are used with SharedArrayBuffer and ArrayBuffer objects.
- Documentation [Atomics](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/contributors.txt), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
- **/
- @:native("Atomics")
- extern class Atomics {
- /**
- 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.
- **/
- static function add(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.
- **/
- static function and(typedArray:IntTypedArray, index:Int, value: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.
- **/
- static function compareExchange(typedArray:IntTypedArray, index:Int, expectedValue:Int, replacementValue: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.
- **/
- static function exchange(typedArray:IntTypedArray, index:Int, value:Int):Int;
- /**
- 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.
- **/
- static function isLockFree(size:Int):Bool;
- /**
- 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.
- **/
- static function load(typedArray:IntTypedArray, index:Int):Int;
- /**
- Notifies agents that are waiting on the specified index of the array.
- Returns the number of agents that were notified.
- **/
- static function notify(typedArray:IntTypedArray, index:Int, ?count: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.
- **/
- static function or(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.
- **/
- static function store(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.
- **/
- static function sub(typedArray:IntTypedArray, index:Int, value:Int):Int;
- /**
- 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.)
- **/
- static function wait(typedArray:Int32Array, index:Int, value:Int, ?timeout:Int):WaitValue;
- /**
- Computes a bitwise XOR 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.
- **/
- static function xor(typedArray:IntTypedArray, index:Int, value:Int):Int;
- }
- enum abstract WaitValue(String) {
- var OK = "ok";
- var NotEqual = "not-equal";
- var TimedOut = "timed-out";
- }
|