【JavaScript ECMAScript】Atomics::Atomics.add静的メソッドの使い方
Atomics.add()静的メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
Atomics.add()メソッドは、JavaScriptのSharedArrayBufferを用いて複数のWeb Worker間でメモリを共有する際に、共有メモリ上の指定された位置にある整数値に、特定の値を原子的に加算するための静的メソッドです。
ここで言う「原子的に(atomic)」とは、この加算処理が分割不可能な単一の操作として実行されることを意味します。通常、複数のスレッド(Web Worker)が同時に同じメモリ領域の値を読み込み、変更し、書き戻すような操作を行うと、どのスレッドがいつ処理を行うかによって最終的な結果が異なってしまう「競合状態(レースコンディション)」が発生する可能性があります。
Atomics.add()を使用することで、このような競合状態を避け、共有メモリ内のデータの整合性を確実に保つことができます。これにより、共有カウンタの値を複数のWorkerから安全に更新したい場合など、並行処理におけるデータの信頼性を高めることが可能になります。
このメソッドは、対象となるInt32ArrayなどのTypedArrayオブジェクト、加算を行う要素のインデックス、そして加算する値を引数として受け取ります。処理が完了すると、加算操作が実行される前の、元のインデックス位置の値を返します。これは、JavaScriptで共有メモリを使った高度な並行プログラミングを実現するための重要な機能の一つです。
公式リファレンス: Atomics.add()
構文(syntax)
1const sab = new SharedArrayBuffer(1024); 2const ta = new Int32Array(sab); 3 4// ta[0] に 5 を加算する 5Atomics.add(ta, 0, 5);
引数(parameters)
typedArray, index, value
- typedArray: Atomics 操作の対象となる、SharedArrayBuffer から生成された数値型の TypedArray。
- index: typedArray 内の操作対象となる要素のインデックス(位置)。
- value: typedArray の指定されたインデックスに加算される数値。
戻り値(return)
Number
Atomics.add() は、指定された位置の値をアトミックに加算した後の値を返します。