Atomics.wait()
Atomics.wait() 정적 메서드는 Int32Array의 지정된 위치에 지정된 값이
여전히 포함되어 있는지 확인합니다. 만약 그러하다면 잠자기 상태로 있으면서 깨우기(wake-up) 알림을 기다리거나 시간이 만료됩니다.
이 함수는 "ok", "not-equal" 또는 "timed-out" 문자열을 반환합니다.
Note: 이 연산은 공유
Int32Array또는BigInt64Array에서만 작동하며 메인 스레드에서는 허용되지 않을 수 있습니다. 이 메서드의 비차단, 비동기 버전에 대해서는Atomics.waitAsync()를 참조하세요.
구문
js
Atomics.wait(typedArray, index, value)
Atomics.wait(typedArray, index, value, timeout)
매개변수
typedArray-
공유된
Int32Array혹은BigInt64Array. index-
typedArray에서의 대기하고 있는 인덱스. value-
테스트할 기대값.
timeoutOptional-
대기 시간(밀리초). 시간이 명시되지 않으면
Infinity입니다.
반환 값
"ok", "not-equal" 혹은 "timed-out" 문자열
예외
typedArray가 허용된 정수형이 아닐 경우TypeError가 발생합니다.index가typedArray의 범위를 벗어날 경우RangeError가 발생합니다.
예제
wait() 사용하기
공유된 Int32Array에서
js
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
읽기 스레드는 0이 될 것으로 예상되는 위치 0에서 잠자기 상태로 대기 중입니다. 이 값이 유지되는 한 계속 진행되지 않습니다. 그러나 쓰기 스레드가 새 값을 저장하면 쓰기 스레드에서 알림을 받고 새 값(123)을 반환합니다.
js
Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123
쓰기 스레드는 새 값을 저장하고 쓰기가 완료되면 대기 중인 스레드에 알립니다:
js
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
명세서
| Specification |
|---|
| ECMAScript Language Specification # sec-atomics.wait |
브라우저 호환성
BCD tables only load in the browser