當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaScript Atomics store()用法及代碼示例


什麽是原子?

  • Atomics 是 JavaScript 中的一個對象,它提供了作為靜態方法執行原子操作的能力。
  • 就像 JavaScript 中的 Math 對象一樣,Atomics 的所有屬性和方法也是靜態的。
  • 原子與 SharedArrayBuffer(通用固定長度二進製數據緩衝區)對象一起使用。
  • 原子不像其他全局對象那樣是構造函數。
  • 原子不能與 new 運算符一起使用,也不能作為函數調用。

JavaScript 中的原子操作

當存在共享內存時,多個線程可以在內存中讀寫相同的數據。為了確保準確寫入和讀取預測值,除非當前操作完成,否則另一操作無法啟動。原子操作也不能被中斷。

原子.store()方法

  • 在原子操作中,JavaScript 中有一個內置操作 Atomics.store(),用於在數組的特定位置存儲特定值。
  • Atomics.store()操作返回已存儲的值。
  • 整數類型數組、索引和值作為參數傳遞給函數,並返回已存儲在相應數組中的值。

用法:

Atomics.store(typedArray, index, value)

使用的參數:

  • typedarray:它是您要修改的共享整數類型數組。
  • 索引:它是 typedArray 中要存儲值的位置。
  • 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:

javascript


// creating a SharedArrayBuffer 
let buf = new SharedArrayBuffer(25);
let arr = new Uint8Array(buf);
// Initializing element at zeroth position of array with 9
arr[0] = 9;
// Displaying the SharedArrayBuffer 
console.log(Atomics.load(arr, 0));
// Displaying the return value of the Atomics.store() method 
console.log(Atomics.store(arr, 0, 3));
// Displaying the updated SharedArrayBuffer 
console.log(Atomics.load(arr, 0));

輸出:

9
3
3

代碼2:

javascript


// creating a SharedArrayBuffer
let buf = new SharedArrayBuffer(25);
let arr = new Uint8Array(buf);
// Initializing element at zeroth position of array with 3
arr[0] = 3;
// Displaying the SharedArrayBuffer
console.log(Atomics.load(arr, 0));
// Displaying the return value of the Atomics.store() method
console.log(Atomics.store(arr, 0, 2));
// Displaying the updated SharedArrayBuffer 
console.log(Atomics.load(arr, 0));

輸出:

3
2
2

應用:

每當我們想要在數組的特定位置存儲一個值並且還想要返回相同的值時,我們就使用 JavaScript 中的 Atomics.store() 操作。

讓我們看一個 JavaScript 程序:

javascript


// creating a SharedArrayBuffer 
let mybuffer = new SharedArrayBuffer(25);
let myarray = new Uint8Array(mybuffer);
// Initializing the element at zeroth position of array
myarray[0] = 40;
// Displaying the return value of the Atomics.store() method
console.log(Atomics.store(myarray, 0, 20));
// Displaying the updated SharedArrayBuffer 
console.log(Atomics.load(myarray, 0));

輸出:

20
20

異常:

  • 如果 typedArray 不是允許的整數類型之一,則 Atomics.store( ) 操作會拋出 TypeError 。
  • 如果 typedArray 不是共享類型數組,則 Atomics.store( ) 操作會拋出 TypeError。
  • 如果用作 Atomics.store( ) 操作參數的索引超出了 typedArray 的範圍,則 Atomics.store( ) 操作將拋出 RangeError 。


相關用法


注:本文由純淨天空篩選整理自Shubrodeep Banerjee大神的英文原創作品 JavaScript Atomics store() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。