JavaScriptのAtomics.add()関数とは?使い方とサンプルコードを解説
JavaScriptのAtomicsオブジェクトは、add(加算)、sub(減算)、and、or、xor、load(読み込み)、store(書き込み)といったアトミック操作を静的メソッドとして提供するオブジェクトです。これらのメソッドは、SharedArrayBufferオブジェクトと組み合わせて使用され、複数スレッド間でデータを安全に共有・操作するために役立ちます。
このオブジェクトのadd()関数は、型付き配列と位置(インデックス)、および加算する数値を受け取ります。指定された位置に格納されている値に対して引数の数値を加算し、戻り値として加算前の古い値を返します。
構文
Atomics.add()の構文は以下のとおりです。
Atomics.add(typedArray, index, value)
- typedArray: SharedArrayBufferを基に生成されたInt8ArrayやUint8Arrayなどの型付き配列
- index: 加算処理を行う要素の位置(インデックス)
- value: 加算する数値
戻り値
指定された位置に格納されていた加算前の値が返されます。
サンプルコード
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new SharedArrayBuffer(16);
var data = new Uint8Array(arrayBuffer);
data[0] = 3;
document.write(Atomics.add(data, 0, 3));
document.write(", "+Atomics.load(data, 0));
</script>
</body>
</html>
実行結果
3, 6
コードの解説
この例では、まず16バイトのSharedArrayBufferを作成し、それをもとにUint8Arrayを生成しています。data[0]に3を代入した後、Atomics.add()を使ってインデックス0の値に3を加算しています。このとき、add()メソッドは加算前の値である「3」を返し、続くAtomics.load()で読み込んだ値は加算後の「6」になります。このように、Atomics.add()は競合状態を避けながら安全に数値を更新できる便利なメソッドです。
-
JavaScriptのSet.add()関数とは?使い方とサンプルコードを解説
Set.add()関数とは Setオブジェクトのadd()関数は、引数として受け取った値を現在のSetオブジェクトに追加するためのメソッドです。追加された値はSetの末尾に格納されます。 なお、Setは同じ値の重複を許さないコレクションであるため、すでに登録済みの値を再度add()で追加しようとした場合、その操作は無視されます。 構文 基本的な構文は以下の通りです。 setObj.add(value) パラメータ value:Setに追加したい値を指定します。数値、文字列、オブジェクトなど、あらゆる型の値を1つだけ受け取ります。 戻り値 add()メソッドは、値が追加された後のSetオブ
-
JavaScriptのNumber()関数とは?使い方とサンプルコードを解説
JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを