JavaScript | Atomics.notify() 方法
在原子操作中,JavaScript 中有一个内置操作 Atomics.notify() 用于通知一些在等待队列中休眠的代理。 Atomics.notify() 方法返回许多被唤醒的代理。整数类型的数组、索引和计数作为参数传递给函数。
句法:
Atomics.notify(typedArray, index, count)
参数:此方法接受三个参数,如上所述,如下所述:
- typedarray:此参数指定共享整数类型数组 Int16Array。
- index:此参数指定在数组中的位置,typedArray 等待。
- count:此参数统计要通知的休眠代理的数量。它的默认值为+Infinity。
返回值: Atomics.notify() 方法返回唤醒代理的数量。
下面的程序说明了 JavaScript 中的Atomics.notify() 方法:
方案一:
javascript
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
int32[0] = 77;
console.log(int32[0]);
console.log(Atomics.store(int32, 0, 123));
console.log(Atomics.notify(int32, 0, 1));
javascript
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
int32[0] = 77;
console.log(Atomics.load(int32, 66));
console.log(int32[0]);
console.log(Atomics.store(int32, 0, 123));
console.log(Atomics.notify(int32, 6, 1));
console.log(int32[0]);
输出:
77
123
0
方案二:
javascript
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
int32[0] = 77;
console.log(Atomics.load(int32, 66));
console.log(int32[0]);
console.log(Atomics.store(int32, 0, 123));
console.log(Atomics.notify(int32, 6, 1));
console.log(int32[0]);
输出:
0
77
123
0
123
例外:
- 如果 typedArray 不是一个共享的 Int32Array,那么 Atomics.notify() 操作会抛出一个 TypeError。
- 如果用作 Atomics.notify() 操作的参数的索引在 typedArray 中超出范围,则 Atomics.store() 操作会引发 RangeError。
支持的浏览器:
- 谷歌浏览器
- 微软边缘
- 火狐