📜  JavaScript 中的 Atomics.store()

📅  最后修改于: 2022-05-13 01:58:09.652000             🧑  作者: Mango

JavaScript 中的 Atomics.store()

什么是原子?

  • Atomics 是 JavaScript 中的一个对象,它提供了将原子操作作为静态方法执行的能力。
  • 就像 JavaScript 中的 Math 对象一样,Atomics 的所有属性和方法也是静态的。
  • 原子与 SharedArrayBuffer(通用固定长度二进制数据缓冲区)对象一起使用。
  • 原子不是像其他全局对象那样的构造函数。
  • 原子不能与 new运算符一起使用,也不能作为函数调用。

JavaScript 中的原子操作
当有共享内存时,多个线程可以在内存中读取和写入相同的数据。为确保准确写入和读取预测值,除非当前操作完成,否则无法开始另一操作。原子操作也不能中断。

Atomics.store() 方法

  • 在原子操作中,JavaScript 中有一个内置操作 Atomics.store() 用于将特定值存储在数组的特定位置。
  • Atomics.store() 操作返回已存储的值。
  • 整数类型数组、索引和值作为参数传递给函数,并返回已存储在相应数组中的值。

    句法:

    Atomics.store(typedArray, index, value)

    使用的参数:

    1. typedarray:它是您要修改的共享整数类型数组。
    2. index:它是 typedArray 中要存储值的位置。
    3. value :这是您要存储的数量。

    返回值:
    Atomics.store() 返回已存储的值。

    下面提供了上述函数的示例。

    例子:

    Input : arr[0] = 9;
            Atomics.store(arr, 0, 3);
    Output : 3
    
    Input : arr[0] = 3; 
            Atomics.store(arr, 0, 2);
    Output : 2
    

    下面提供了上述函数的代码。

    代码 1:

    
    

    输出 :

    9
    3
    3
    

    代码 2:

    
    

    输出 :

    3
    2
    2
    

    应用:
    每当我们想在数组的特定位置存储一个值并且还想返回相同的值时,我们使用 JavaScript 中的 Atomics.store() 操作。

    让我们看一个 JavaScript 程序:

    
    

    输出 :

    20
    20
    

    例外:

    • 如果 typedArray 不是允许的整数类型之一,那么 Atomics.store() 操作会抛出 TypeError。
    • 如果 typedArray 不是共享类型数组,那么 Atomics.store() 操作会抛出 TypeError。
    • 如果用作 Atomics.store() 操作的参数的索引超出了 typedArray 的范围,则 Atomics.store() 操作将引发 RangeError。