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

자바스크립트 Atomics.add() 함수 완벽 가이드

자바스크립트의 Atomics 객체는 add(더하기), sub(빼기), and, or, xor, load(읽기), store(쓰기) 등 다양한 원자적(atomic) 연산을 정적 메서드 형태로 제공합니다. 이러한 메서드들은 SharedArrayBuffer 객체와 함께 사용되며, 여러 스레드가 동시에 동일한 메모리에 접근할 때 발생할 수 있는 데이터 충돌과 경합 조건(race condition)을 방지하는 역할을 합니다.

그중 add() 함수는 타입 배열(typed array), 위치(인덱스), 더할 숫자를 인수로 받습니다. 지정된 위치의 기존 값에 주어진 숫자를 더한 뒤, 연산이 적용되기 전의 기존 값(old value)을 반환합니다.

문법

기본 문법은 다음과 같습니다.

Atomics.add(typedArray, index, value)
  • typedArray: SharedArrayBuffer를 기반으로 생성된 정수형 타입 배열
  • index: 값을 더할 요소의 위치
  • value: 더할 숫자

예제

다음은 Atomics.add() 함수를 사용하는 간단한 예제입니다.

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var arrayBuffer = new SharedArrayBuffer(16);
      var data = new Uint8Array(arrayBuffer);
      data[0] = 3;
      document.write(Atomics.add(data, 0, 3));
      document.write(", "+Atomics.load(data, 0));
   </script>
</body>
</html>

실행 결과

3, 6

결과 해설

먼저 크기가 16바이트인 SharedArrayBuffer를 생성하고, 이를 기반으로 Uint8Array를 만든 다음 첫 번째 요소(data[0])에 3을 할당했습니다.

Atomics.add(data, 0, 3)은 0번째 위치의 값 3에 3을 더해 6으로 만들고, 변경 전의 기존 값인 3을 반환합니다. 이후 Atomics.load(data, 0)는 덧셈 연산이 적용된 최신 값 6을 읽어옵니다. 따라서 화면에는 "3, 6"이 출력됩니다.