Atomics.wait()

Atomics.wait() 정적 메서드는 Int32Array의 지정된 위치에 지정된 값이 여전히 포함되어 있는지 확인합니다. 만약 그러하다면 잠자기 상태로 있으면서 깨우기(wake-up) 알림을 기다리거나 시간이 만료됩니다. 이 함수는 "ok", "not-equal" 또는 "timed-out" 문자열을 반환합니다.

Note: 이 연산은 공유 Int32Array 또는 BigInt64Array에서만 작동하며 메인 스레드에서는 허용되지 않을 수 있습니다. 이 메서드의 비차단, 비동기 버전에 대해서는 Atomics.waitAsync() (en-US)를 참조하세요.

구문

Atomics.wait(typedArray, index, value)
Atomics.wait(typedArray, index, value, timeout)

매개변수

typedArray

공유된 Int32Array 혹은 BigInt64Array.

index

typedArray에서의 대기하고 있는 인덱스.

value

테스트할 기대값.

timeout Optional

대기 시간(밀리초). 시간이 명시되지 않으면 Infinity입니다.

반환 값

"ok", "not-equal" 혹은 "timed-out" 문자열

예외

  • typedArray가 허용된 정수형이 아닐 경우 TypeError가 발생합니다.
  • indextypedArray의 범위를 벗어날 경우 RangeError가 발생합니다.

예제

wait() 사용하기

공유된 Int32Array에서

const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);

읽기 스레드는 0이 될 것으로 예상되는 위치 0에서 잠자기 상태로 대기 중입니다. 이 값이 유지되는 한 계속 진행되지 않습니다. 그러나 쓰기 스레드가 새 값을 저장하면 쓰기 스레드에서 알림을 받고 새 값(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);

명세서

Specification
ECMAScript Language Specification
# sec-atomics.wait

브라우저 호환성

BCD tables only load in the browser

같이 보기