Baseline Widely available
Atomics.wait()
éçã¡ã½ããã¯ãå
±æã¡ã¢ãªã¼ä½ç½®ã«æå®ãããå¤ãå«ã¾ãã¦ãããã¨ã確èªããå«ã¾ãã¦ããå ´åã¯ãè¦ééç¥ã¾ãã¯ã¿ã¤ã ã¢ã¦ããå¾
ã¤ããã«ä¼ç ãã¾ããã¡ã¢ãªã¼ä½ç½®ãæå®ãããå¤ã¨ä¸è´ããªãå ´å㯠"not-equal"
ã Atomics.notify()
ã«ãã£ã¦è¦éããå ´å㯠"ok"
ãã¿ã¤ã ã¢ã¦ããåããå ´å㯠"timed-out"
ã¨ããæååãè¿ãã¾ãã
Atomics.wait()
㨠Atomics.notify()
ã¯ãå
±æã¡ã¢ãªã¼å
ã®å¤ã«åºã¥ãã¦ã¹ã¬ããã®åæãã§ããããã«ããããã«ä¸ç·ã«ä½¿ç¨ããã¾ããã¹ã¬ããã¯ãåæå¤ã夿´ãããå ´åãããã«å¦çãç¶è¡ãããã¨ããåæãã¤ã³ãã«å°éããã¨ãã«å¥ã®ã¹ã¬ããããã®éç¥ãå¾
ã¤ãã¨ãã§ãã¾ãã
ãã®ã¡ã½ããã¯ãSharedArrayBuffer
ã®ãã¥ã¼ã§ãã Int32Array
ã¾ã㯠BigInt64Array
ã§ã®ã¿åä½ãã¾ããããã¯ããããã³ã°æä½ã§ãããã¡ã¤ã³ã¹ã¬ããã§ã¯ä½¿ç¨ã§ãã¾ããããã®ã¡ã½ããã®éãããã¯ãéåæãã¼ã¸ã§ã³ã«ã¤ãã¦ã¯ãAtomics.waitAsync()
ãã覧ãã ããã
Atomics.wait(typedArray, index, value)
Atomics.wait(typedArray, index, value, timeout)
弿°
typedArray
SharedArrayBuffer
ã®ãã¥ã¼ã§ãã Int32Array
ã¾ã㯠BigInt64Array
index
å¾
ã¤å¯¾è±¡ã¨ãªã typedArray
ã®ä¸ã®ä½ç½®ã
value
æ¤æ»ã§æå¾ ãããå¤ã
timeout
çç¥å¯
å¾
æ©æéï¼ããªç§åä½ï¼ãNaN
ï¼ããã³ NaN
ã«å¤æãããå¤ããã¨ãã° undefined
ï¼ã¯ Infinity
ã«ãªãã¾ããè² ã®å¤ã¯ 0
ã«ãªãã¾ãã
æååã§ã "not-equal"
, "ok"
, "timed-out"
ã®ããããã§ãã
value
ã index
ã«æ ¼ç´ããã¦ããå¤ã¨çãããªãå ´åã"not-equal"
ãå³åº§ã«è¿ããã¾ããAtomics.notify()
ã®å¼ã³åºãã«ãã£ã¦ç®è¦ããå ´åãæå¾
ãããå¤ã夿´ããã¦ãããã©ããã«é¢ä¿ãªãã"ok"
ãè¿ããã¾ããAtomics.notify()
ã«ãã£ã¦ç®è¦ããªãã£ãå ´åãã¹ãªã¼ãå¾
æ©ãæå®ãã timeout
ãè¶
ããã¨ãã« "timed-out"
ãè¿ããã¾ããTypeError
次ã®ããããã®å ´åã«çºçãã¾ãã
typedArray
ãã SharedArrayBuffer
ã®ãã¥ã¼ã§ãã Int32Array
ã¾ã㯠BigInt64Array
ã§ãªãå ´åãRangeError
index
ã typedArray
ã®ç¯å²ãè¶
ãã¦ããå ´åã«çºçãã¾ãã
次ã®ãããªå
±æããã Int32Array
ããã£ãã¨ãã¾ãã
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
èªã¿åãã¹ã¬ããã¯ãæå®ããã value
ãæå®ããã index
ã«æ ¼ç´ããã¦ããå¤ã¨ä¸è´ãããããä½ç½® 0 ã§ä¼ç ãã¦å¾
æ©ãã¦ãã¾ãã æ¸ãè¾¼ã¿ã¹ã¬ããããæå®ããã typedArray
ã®ä½ç½® 0 ã§ Atomics.notify()
ãå¼ã³åºãã¾ã§ãèªã¿åãã¹ã¬ããã¯ç§»åãã¾ããã è¦éããå¾ãä½ç½® 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);
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4