📅  最后修改于: 2023-12-03 15:01:36.901000             🧑  作者: Mango
Atomics.load()
方法用于获取 SharedArrayBuffer
对象中指定索引处的整数值,支持原子操作,即在读取值的过程中,其他线程不能改变该值,保证数据的一致性。
Atomics.load(typedArray, index);
typedArray
:一个 Int8Array
, Uint8Array
, Int16Array
, Uint16Array
, Int32Array
, Uint32Array
, BigInt64Array
, BigUint64Array
类型的 SharedArrayBuffer
对象,表示使用哪种类型的数组。index
:一个整数表示要获取的索引位置。方法返回从指定索引位置读取到的整数值。
const buffer = new SharedArrayBuffer(4);
const view = new Int32Array(buffer);
// 线程1里面的代码
Atomics.store(view, 0, 42);
// 线程2里面的代码
console.log(Atomics.load(view, 0));
// 输出:42
在上面的示例中,我们创建了一个 SharedArrayBuffer
对象,并将其传递给一个 Int32Array
视图,该视图表示使用一个 32
位的有符号整数类型数组。然后,我们在线程1中使用 Atomics.store()
方法将值 42
存储在视图的第一个索引位置。接着,在线程2中使用 Atomics.load()
方法读取视图的第一个索引位置,该方法会返回值 42
。
Atomics.load()
方法返回的是值的拷贝,而不是原始值的引用。因此,如果要修改该值,需要使用 Atomics.store()
方法进行改变。Atomics.load()
方法是原子操作,即在读取值的过程中,其他线程不能改变该值,保证数据的一致性。