×
ECMAScript
標準組込オブジェク
ト
標準組込コンストラクター
非公開オブジェクト
インターフェース
【JSリファレンス】Atomics.notify()
更新日:2024/06/14
Atomics.notify()は、Atomicsオブジェクトのメソッドです。
Atomics.wait()でスリープしているスレッドに、値を変更したことを通知します。
■構文
Atomics.notify ( typedArray, index, count )
- typedArray: 次のTypedArray
- index: typedArrayのインデックス
- count: 省略可能。規定値 Infinity
通知を行うスレッドの最大数
復帰したスレッドの数
■使用例
以降のコードは、Node.jsを想定しています。
メインスレッド:
const {Worker} = require("worker_threads");
const buffer = new SharedArrayBuffer(
Int32Array.BYTES_PER_ELEMENT);
new Worker("worker.js", { workerData:buffer });
new Worker("worker.js", { workerData:buffer });
new Worker("worker.js", { workerData:buffer });
new Worker("worker.js", { workerData:buffer });
const i32Array = new Int32Array(buffer);
setTimeout(()=>{
Atomics.store( i32Array , 0 , 100 );
// Workerに合図を送る
const result = Atomics.notify(i32Array, 0,3);
console.log( `${result}個のスレッドが復帰`);
},1000);
Workerスレッド: worker.js
const {workerData:buffer} = require("worker_threads");
const i32Array = new Int32Array(buffer);
// メインの開始合図まで停止する
const result = Atomics.wait(i32Array,0,0,2000);
console.log( `Worker End:${result}` );
実行結果は次のようになります。
3個のスレッドが復帰
Worker End:ok
Worker End:ok
Worker End:ok
Worker End:timed-out
関連ページ
更新日:2024/06/14
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。