Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Atomics::Atomics.and静的メソッドの使い方

Atomics.and()静的メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Atomics.and()メソッドは、共有メモリ上に存在する型付き配列(例えばInt32ArrayBigInt64Arrayなど、SharedArrayBufferを基盤とする配列)の特定のインデックスに対し、ビットごとのAND演算を実行するメソッドです。このメソッドは、複数のWeb Worker(ウェブアプリケーションで並行処理を行うための機能)が同じメモリを共有している環境で特に重要になります。

通常のJavaScriptの操作では、複数のWorkerが同時に同じメモリ領域を読み書きしようとすると、データの競合が発生し、意図しない結果やデータの破損につながる可能性があります。しかし、Atomics.and()は「アトミック」な操作として実行されます。これは、対象のメモリ位置の値を読み込み、指定された値とのビットごとのAND演算を実行し、その結果を同じメモリ位置に書き戻すという一連の処理が、他のスレッドから中断されることなく、不可分な一つの単位として実行されることを意味します。これにより、複数のWorkerからの同時アクセスがあったとしても、データの整合性が確実に保たれます。

このメソッドは、第一引数に操作対象となる共有された型付き配列、第二引数に操作を行う要素のインデックス、第三引数にAND演算を行う値を指定します。戻り値としては、AND演算が実行される前の、指定されたインデックス位置に存在していた元の値を返します。例えば、複数のWorkerが共有メモリ上の特定のフラグを同時に更新するような場面で、データの状態を安全に管理するために利用され、並行処理環境におけるデータ同期と整合性の維持に不可欠なツールとして機能します。

公式リファレンス: Atomics.and()

構文(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演算した結果の整数値を返します。

関連コンテンツ