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

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

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

作成日: 更新日:

基本的な使い方

Atomics.or()メソッドは、SharedArrayBufferによって実現される共有メモリ上で、指定された位置の値をビットごとの論理OR演算によってアトミックに更新する静的メソッドです。

このメソッドは、複数のウェブワーカーなどの処理が同時に同じメモリ領域にアクセスし、データを操作しようとした際に、読み書きの操作が中断されることなく、一つの連続した処理として完全に実行されることを保証します。これを「アトミックな操作」と呼び、並行処理におけるデータの不整合や競合状態を防ぎ、データの一貫性を保つために非常に重要です。

利用する際は、第一引数にSharedArrayBufferを基盤とするInt8ArrayやUint32Arrayなどの型付き配列、第二引数に操作対象のインデックス、第三引数にOR演算に使う値を指定します。Atomics.or()メソッドは、この演算が行われる前の、指定されたインデックス位置にあった元の値を返します。

主に、複数のウェブワーカーが共通のデータ構造を安全に更新したり、複数の条件フラグを同時に設定したりするような、並行プログラミングのシナリオで活用されます。例えば、ある機能が複数のワーカーによって完了したことを示すために、各ワーカーが共有メモリ上の特定ビットを立てる必要がある場合などに、信頼性の高い方法で状態を更新することが可能です。

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

構文(syntax)

1const sharedBuffer = new SharedArrayBuffer(4);
2const int32Array = new Int32Array(sharedBuffer);
3const oldValue = Atomics.or(int32Array, 0, 3);

引数(parameters)

typedArray, index, value

  • typedArray: number[]: 操作対象の TypedArray オブジェクト
  • index: number: 操作対象の配列のインデックス
  • value: number: 配列の指定したインデックスにビットごとの OR 演算を行う値

戻り値(return)

Number または BigInt

Atomics.or()メソッドは、指定されたSharedArrayBufferのオフセットにある値と、指定された値とのビットごとのOR演算の結果を返します。戻り値は、操作が正常に行われた場合は元の値、そうでない場合は未定義となります。

関連コンテンツ