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

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

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

作成日: 更新日:

基本的な使い方

Atomics.sub()メソッドは、SharedArrayBufferを基盤とする型付き配列において、指定されたインデックス位置の要素から特定の値をアトミックに減算し、その結果を書き戻す操作を実行するメソッドです。このアトミックな処理は、複数のスレッドが共有メモリ上の同じデータを同時に操作する際に発生するデータ競合を防ぎ、データの整合性を保証するために不可欠です。

このメソッドは、操作対象のTypedArray、減算する要素のインデックス、減算する値の三つの引数を取ります。指定されたインデックスにある現在の値を読み込み、その値から指定された値を減算し、結果を同じインデックスに書き戻すまでの一連の操作をアトミックに実行します。この「読み込み、減算、書き込み」のすべてが他のスレッドによる割り込みなしに単一の処理として完了するため、並行処理環境下での共有データの安全な更新が保証されます。

戻り値は、減算操作実行前の元の値です。この機能は、マルチスレッド環境で共有されるカウンターやフラグなどの数値を安全に更新する際に特に有用です。例えば、複数のWeb Workers間でタスク残数を安全に減らす用途などに活用され、複雑な並行処理におけるデータの一貫性維持に貢献します。

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

構文(syntax)

1const sharedBuffer = new SharedArrayBuffer(16);
2const typedArray = new Int32Array(sharedBuffer);
3
4typedArray[0] = 10;
5const previousValue = Atomics.sub(typedArray, 0, 3);

引数(parameters)

typedArray, index, value

  • typedArray: SharedArrayBuffer を基にした TypedArray オブジェクト。アトミック操作の対象。
  • index: typedArray 内で操作を行う要素のインデックス。
  • value: typedArray の要素から減算する値。

戻り値(return)

数値

Atomics.sub()は、指定された位置の値を減算した後の元の値を返します。

関連コンテンツ