A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait below:

Atomics.wait() - JavaScript | MDN

Atomics.wait()

Baseline Widely available

Atomics.wait() 静的メソッドは、共有メモリー位置に指定された値が含まれていることを確認し、含まれている場合は、覚醒通知またはタイムアウトを待つために休眠します。メモリー位置が指定された値と一致しない場合は "not-equal"、 Atomics.notify() によって覚醒した場合は "ok"、タイムアウトが切れた場合は "timed-out" という文字列を返します。

Atomics.wait() と Atomics.notify() は、共有メモリー内の値に基づいてスレッドの同期ができるようにするために一緒に使用されます。スレッドは、同期値が変更された場合、すぐに処理を続行することも、同期ポイントに到達したときに別のスレッドからの通知を待つこともできます。

このメソッドは、SharedArrayBuffer のビューである Int32Array または BigInt64Array でのみ動作します。これはブロッキング操作であり、メインスレッドでは使用できません。このメソッドの非ブロック、非同期バージョンについては、Atomics.waitAsync() をご覧ください。

構文
Atomics.wait(typedArray, index, value)
Atomics.wait(typedArray, index, value, timeout)
引数
typedArray

SharedArrayBuffer のビューである Int32Array または BigInt64Array

index

待つ対象となる typedArray の中の位置。

value

検査で期待される値。

timeout 省略可

待機時間(ミリ秒単位)。NaN(および NaN に変換される値、たとえば undefined)は Infinity になります。負の値は 0 になります。

返値

文字列で、 "not-equal", "ok", "timed-out" のいずれかです。

例外
TypeError

次のいずれかの場合に発生します。

RangeError

index が typedArray の範囲を超えている場合に発生します。

例 wait() の使用

次のような共有された Int32Array があったとします。

const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);

読み取りスレッドは、指定された value が指定された index に格納されている値と一致するため、位置 0 で休眠して待機しています。 書き込みスレッドが、指定された typedArray の位置 0 で Atomics.notify() を呼び出すまで、読み取りスレッドは移動しません。 覚醒した後、位置 0 の値が書き込みスレッドによって変更されていない場合、読み取りスレッドは休眠状態に戻らず、処理を続行することに注意してください。

Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123

書き手のスレッドは新しい値を格納し、待っているスレッドに書き込みが完了したことを知らせます。

console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4