Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 Atomics.store() 메서드를 사용하는 방법

JavaScript Atomics.store() 메서드란?

Atomics.store()는 JavaScript에 내장된 메서드로, 배열의 특정 위치에 지정한 값을 저장하는 데 사용됩니다. 이 메서드는 정수형 타입 배열(Integer Typed Array), 인덱스, 저장할 값 총 세 개의 인수를 받으며, 저장이 완료되면 해당 값을 반환합니다.

Atomics 객체는 여러 스레드가 동시에 같은 메모리에 접근할 때 발생할 수 있는 경쟁 상태(race condition)를 방지하기 위해 원자적(atomic) 연산을 제공합니다. 따라서 멀티스레드 환경에서 안전하게 데이터를 읽고 쓸 수 있습니다.

문법(Syntax)

Atomics.store(typedArray, index, value);

매개변수(Parameters)

  • typedArray — 수정하려는 공유 정수형 타입 배열(Int8Array, Uint8Array, Int32Array 등)입니다.
  • index — 값을 저장할 배열 내부의 위치입니다.
  • value — 해당 위치에 저장하려는 숫자입니다.

사용 시 주의사항

특정 위치에 값을 저장하고 그 결과값을 즉시 반환받아야 할 때 Atomics.store()를 활용합니다.

단, Atomics는 반드시 SharedArrayBuffer(고정 길이의 일반 바이너리 데이터 버퍼) 객체와 함께 사용해야 합니다. 또한 Atomics는 생성자가 아니므로 new 연산자와 함께 사용할 수 없고, 일반 함수처럼 직접 호출할 수도 없습니다.

예제(Example)

다음 예제에서는 먼저 SharedArrayBuffer 객체를 생성합니다. 그런 다음 배열 'arr'을 만들어 인덱스 1에 초기값 '7'을 할당합니다. 이후 Atomics.store()를 사용하여 인덱스 1의 값 7을 3으로 교체하고, 교체된 새로운 값이 반환됩니다. 실제로 값이 제대로 저장되었는지 확인하기 위해 최신 상태의 배열 값을 읽어오는 Atomics.load() 메서드를 함께 사용하여 결과를 출력합니다.

<html>
<body>
<script>
   var buf = new SharedArrayBuffer(25);
   var arr = new Uint8Array(buf);
   arr[1] = 7;
   var res = Atomics.store(arr, 1, 3)
   document.write(res);
   document.write("</br>");
   document.write(Atomics.load(arr,1));
</script>
</body>
</html>

출력 결과(Output)

3
3

첫 번째 출력인 '3'은 Atomics.store()가 반환한 저장된 값이며, 두 번째 출력인 '3'은 Atomics.load()로 다시 읽어온 배열의 최신 값입니다. 이를 통해 값이 성공적으로 교체되었음을 확인할 수 있습니다.