【JavaScript ECMAScript】Atomics::Atomics.and静的メソッドの使い方
Atomics.and()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Atomics.and()メソッドは、共有メモリ上に存在する型付き配列(例えばInt32ArrayやBigInt64Arrayなど、SharedArrayBufferを基盤とする配列)の特定のインデックスに対し、ビットごとのAND演算を実行するメソッドです。このメソッドは、複数のWeb Worker(ウェブアプリケーションで並行処理を行うための機能)が同じメモリを共有している環境で特に重要になります。
通常のJavaScriptの操作では、複数のWorkerが同時に同じメモリ領域を読み書きしようとすると、データの競合が発生し、意図しない結果やデータの破損につながる可能性があります。しかし、Atomics.and()は「アトミック」な操作として実行されます。これは、対象のメモリ位置の値を読み込み、指定された値とのビットごとのAND演算を実行し、その結果を同じメモリ位置に書き戻すという一連の処理が、他のスレッドから中断されることなく、不可分な一つの単位として実行されることを意味します。これにより、複数のWorkerからの同時アクセスがあったとしても、データの整合性が確実に保たれます。
このメソッドは、第一引数に操作対象となる共有された型付き配列、第二引数に操作を行う要素のインデックス、第三引数にAND演算を行う値を指定します。戻り値としては、AND演算が実行される前の、指定されたインデックス位置に存在していた元の値を返します。例えば、複数のWorkerが共有メモリ上の特定のフラグを同時に更新するような場面で、データの状態を安全に管理するために利用され、並行処理環境におけるデータ同期と整合性の維持に不可欠なツールとして機能します。
構文(syntax)
1const sharedBuffer = new SharedArrayBuffer(4); 2const intArray = new Int32Array(sharedBuffer); 3 4Atomics.store(intArray, 0, 7); 5Atomics.and(intArray, 0, 3);
引数(parameters)
typedArray, index, value
- typedArray: SharedArrayBufferから作成された、Int32ArrayまたはBigInt64Arrayのいずれかの型を持つ配列
- index: 操作対象となる要素のインデックス
- value: ビットAND演算に使用する値
戻り値(return)
Number
Atomics.and()メソッドは、指定されたSharedArrayBufferの指定された位置にある整数値と、指定された値をビットごとのAND演算した結果の整数値を返します。