From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/atomics/wait/index.html | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/global_objects/atomics/wait/index.html (limited to 'files/zh-cn/web/javascript/reference/global_objects/atomics/wait/index.html') diff --git a/files/zh-cn/web/javascript/reference/global_objects/atomics/wait/index.html b/files/zh-cn/web/javascript/reference/global_objects/atomics/wait/index.html new file mode 100644 index 0000000000..6a14b9260a --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/atomics/wait/index.html @@ -0,0 +1,95 @@ +--- +title: Atomics.wait() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/wait +tags: + - Atomics + - JavaScript + - Method + - Shared Memory +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/wait +--- +
{{JSRef}}
+ +

静态方法 Atomics.wait() 确保了一个在 {{jsxref("Int32Array")}} 数组中给定位置的值没有发生变化、仍然是给定的值时进程将会睡眠,直到被唤醒或超时。该方法返回一个字符串,值为"ok", "not-equal", 或 "timed-out" 之一。

+ +
+

注意: 这项操作仅允许同一个共享内存的 {{jsxref("Int32Array")}} 配合使用并且无法运行在主线程中。

+
+ +

语法

+ +
Atomics.wait(typedArray, index, value[, timeout])
+
+ +

参数

+ +
+
typedArray
+
一个共享内存的  {{jsxref("Int32Array")}} 数组。
+
index
+
给定需要检测的 typedArray 数组的位置索引。
+
value
+
给定需要检测的位置索引的预期值。
+
timeout {{optional_inline}}
+
超时前等待的毫秒数。 {{jsxref("Infinity")}}, 如未提供该参数,将为无穷大。
+
+ +

返回值

+ +

一个 {{jsxref("String")}} 字符串,值为 "ok", "not-equal", 或 "timed-out" 三种之一。

+ +

异常

+ + + +

示例

+ +

创建一个共享内存的 Int32Array :

+ +
var sab = new SharedArrayBuffer(1024);
+var int32 = new Int32Array(sab);
+
+ +

检测给定的数组索引0的值,如果它如预期一般的等于我们给定的值0,则这个读取线程将会睡眠等待。一旦当有一个写入线程在这个位置存储了一个新值,它将会收到写入线程的通知并且返回新值 (123) :

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

一旦某个写入线程存储了一个新值到int32 的索引0位置,则通知给该等待线程:

+ +
console.log(int32[0]); // 0;
+Atomics.store(int32, 0, 123);
+Atomics.notify(int32, 0, 1);
+ +

规范

+ + + + + + + + + + + + + + +
规范状态备注
{{SpecName('ESDraft', '#sec-atomics.wait', 'Atomics.wait')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

浏览器支持

+ + + +

{{Compat("javascript.builtins.Atomics.wait")}}

+ +

相关参阅

+ + -- cgit v1.2.3-54-g00ecf