Baseline Widely available *
Atomics
ê°ì²´ë ìí 믹 ì°ì°(Atomic operation, ììì ì°ì°)ì ì ì ë©ìëë¡ ì ê³µí©ëë¤. SharedArrayBuffer
ì ArrayBuffer
ê°ì²´ì í¨ê» ì¬ì©ë©ëë¤.
ìí 믹 ì°ì°ì Atomic
모ëì ì¤ì¹ë©ëë¤. ë¤ë¥¸ ì ì ê°ì²´ì ë¬ë¦¬ Atomics
ë ìì±ìê° ìë기 ë문ì, new
ì°ì°ìì í¨ê» ì¬ì©íê±°ë Atomics
ê°ì²´ë¥¼ í¨ìë¡ í¸ì¶í ì ììµëë¤. Math
ê°ì²´ì²ë¼ Atomics
ì 모ë ìì±ê³¼ ë©ìëë ì ì ì
ëë¤.
ë©ëª¨ë¦¬ê° ê³µì ëë©´ ì¬ë¬ ì¤ë ëê° ë©ëª¨ë¦¬ìì ëì¼í ë°ì´í°ë¥¼ ì½ê³ ì¸ ì ììµëë¤. ìí 믹 ì°ì°ì ì측 ê°ë¥í ê°ì ì°ê³ ì½ê³ , ë¤ì ì°ì°ì´ ììë기 ì ì ì°ì°ì ìë£íì¬ ì°ì°ì´ ì¤ë¨ëì§ ìëë¡ í©ëë¤.
Waitì notifywait()
ì notify()
ë©ìëë Linux í¨í
ì¤(futex)("ë¹ ë¥¸ ì¬ì©ì ê³µê° ë®¤í
ì¤(mutex)")ìì 모ë¸ë§ëì´ í¹ì ì¡°ê±´ì´ ì°¸ì´ ë ëê¹ì§ 기ë¤ë¦¬ë ë°©ë²ì ì ê³µíë©° ì¼ë°ì ì¼ë¡ ì°¨ë¨ êµ¬ë¬¸ì¼ë¡ ì¬ì©ë©ëë¤.
Atomics[@@toStringTag]
@@toStringTag
ìì±ì ì´ê¸° ê°ì "Atomics"
문ìì´ì
ëë¤. ì´ ìì±ì Object.prototype.toString()
ìì ì¬ì©ë©ëë¤.
Atomics.add()
ë°°ì´ì í¹ì ì¸ë±ì¤ì ìë ê°ì ì ë¬ë ê°ì ì¶ê°í©ëë¤. í´ë¹ ì¸ë±ì¤ì ì´ì ê°ì ë°íí©ëë¤.
Atomics.and()
ì ë¬ë ê°ê³¼ ë°°ì´ì ì§ì ë ì¸ë±ì¤ì ìë ê°ì¼ë¡ AND ì°ì°ì ìíí©ëë¤. í´ë¹ ì¸ë±ì¤ì ì´ì ê°ì ë°íí©ëë¤.
Atomics.compareExchange()
ë°°ì´ì ì§ì ë ì¸ë±ì¤ ê°ê³¼ ê°ì¼ë©´ 그곳ì ê°ì ì ì¥í©ëë¤. ì´ì ê°ì ë°íí©ëë¤.
Atomics.exchange()
ë°°ì´ì ì§ì ë ìì¹ì ì ë¬ë°ì ê°ì ì ì¥í©ëë¤. ì´ì ê°ì ë°íí©ëë¤.
Atomics.isLockFree(size)
ì ê¸ ëë atomic ì°ì°ì ì¬ì©í ì§ ì¬ë¶ë¥¼ ê²°ì íë ë° ì¬ì©í ì ìë ìµì í 기본 ììì
ëë¤. 주ì´ì§ ìì í¬ê¸°ì ë°°ì´ì ëí atomic ì°ì°ì´ íëì¨ì´ atomic ì°ì°(ì ê¸ê³¼ ë°ë)ì ì¬ì©íì¬ êµ¬íëë ê²½ì° true
를 ë°íí©ëë¤. ì 문ê°ë§ ì¬ì©í©ëë¤.
Atomics.load()
ë°°ì´ì ì§ì ë ìì¹ì ìë ê°ì ë°íí©ëë¤.
Atomics.notify()
ë°°ì´ì ì§ì ë ì¸ë±ì¤ìì ë기 ì¤ì¸ ìì´ì í¸ì ì립ëë¤. ì림ì ë°ì ìì´ì í¸ ì를 ë°íí©ëë¤.
Atomics.or()
ì ë¬ë ê°ê³¼ ë°°ì´ì ì§ì ë ì¸ë±ì¤ì ìë ê°ì¼ë¡ OR ì°ì°ì ìíí©ëë¤. í´ë¹ ì¸ë±ì¤ì ì´ì ê°ì ë°íí©ëë¤.
Atomics.store()
ë°°ì´ì ì§ì ë ì¸ë±ì¤ì ê°ì ì ì¥í©ëë¤. ê°ì ë°íí©ëë¤.
Atomics.sub()
ë°°ì´ì ì§ì ë ì¸ë±ì¤ìì ê°ì ëºëë¤. í´ë¹ ì¸ë±ì¤ì ì´ì ê°ì ë°íí©ëë¤.
Atomics.wait()
ë°°ì´ì ì§ì ë ì¸ë±ì¤ê° ì¬ì í ê°ì í¬í¨íê³ ìê³ ë기 ì¤ì´ê±°ë ìê° ì´ê³¼ëëì§ íì¸í©ëë¤. "ok"
, "not-equal"
ëë "timed-out"
ì ë°íí©ëë¤. í¸ì¶ ìì´ì í¸ìì ëê¸°ê° íì©ëì§ ìì¼ë©´ ìì¸ê° ë°ìí©ëë¤. (ëë¶ë¶ì ë¸ë¼ì°ì ë ë¸ë¼ì°ì ì ë©ì¸ ì¤ë ëìì wait()
ì íì©íì§ ììµëë¤.)
Atomics.waitAsync()
ê³µì ë©ëª¨ë¦¬ ìì¹ìì ë¹ë기ìì¼ë¡(ì¦, Atomics.wait
ì ë¤ë¥´ê² ì°¨ë¨ ìì´) ë기íê³ íë¡ë¯¸ì¤
를 ë°íí©ëë¤.
Atomics.xor()
ì ê³µë ê°ì ì¬ì©íì¬ ë°°ì´ì ì§ì ë ì¸ë±ì¤ì ìë ê°ì ëí´ XOR ì°ì°ì ìíí©ëë¤. í´ë¹ ì¸ë±ì¤ì ì´ì ê°ì ë°íí©ëë¤.
const sab = new SharedArrayBuffer(1024);
const ta = new Uint8Array(sab);
ta[0]; // 0
ta[0] = 5; // 5
Atomics.add(ta, 0, 12); // 5
Atomics.load(ta, 0); // 17
Atomics.and(ta, 0, 1); // 17
Atomics.load(ta, 0); // 1
Atomics.compareExchange(ta, 0, 5, 12); // 1
Atomics.load(ta, 0); // 1
Atomics.exchange(ta, 0, 12); // 1
Atomics.load(ta, 0); // 12
Atomics.isLockFree(1); // true
Atomics.isLockFree(2); // true
Atomics.isLockFree(3); // false
Atomics.isLockFree(4); // true
Atomics.or(ta, 0, 1); // 12
Atomics.load(ta, 0); // 13
Atomics.store(ta, 0, 12); // 12
Atomics.sub(ta, 0, 2); // 12
Atomics.load(ta, 0); // 10
Atomics.xor(ta, 0, 1); // 10
Atomics.load(ta, 0); // 11
Waitingê³¼ notifying
Int32Array
를 ê³µì íë¤ê³ íì ë
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
ì½ê¸° ì¤ë ëë 0ì´ ë ê²ì¼ë¡ ììëë ìì¹ 0ìì sleep ìíì´ë©° ë기 ì¤ì ëë¤. ì´ê²ì´ ì¬ì¤ì¸ í ê³ìëì§ ììµëë¤. ê·¸ë¬ë ì°ê¸° ì¤ë ëê° ì ê°ì ì ì¥íë©´ ì°ê¸° ì¤ë ëìì ì´ë¥¼ ìë¦¬ê³ ì ê°ì ë°íí©ëë¤. (123)
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