什麽是原子?
- 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 。
相關用法
- JavaScript Atomics sub()用法及代碼示例
- JavaScript Atomics add()用法及代碼示例
- JavaScript Atomics xor()用法及代碼示例
- JavaScript Atomics compareExchange()用法及代碼示例
- JavaScript Atomics exchange()用法及代碼示例
- JavaScript Atomics isLockFree()用法及代碼示例
- JavaScript Atomics or()用法及代碼示例
- JavaScript Atomics load()用法及代碼示例
- JavaScript Atomics waitAsync()用法及代碼示例
- JavaScript Atomics and()用法及代碼示例
- JavaScript Atomics.add()用法及代碼示例
- JavaScript Atomics.and()用法及代碼示例
- JavaScript Atomics.or()用法及代碼示例
- JavaScript Atomics.isLockFree()用法及代碼示例
- JavaScript Atomics.load()用法及代碼示例
- JavaScript Atomics.store()用法及代碼示例
- JavaScript Atomics.sub()用法及代碼示例
- JavaScript Atomics.xor()用法及代碼示例
- JavaScript Array length用法及代碼示例
- JavaScript Array reverse()用法及代碼示例
- JavaScript Array sort()用法及代碼示例
- JavaScript Array fill()用法及代碼示例
- JavaScript Array join()用法及代碼示例
- JavaScript Array toString()用法及代碼示例
- JavaScript Array pop()用法及代碼示例
注:本文由純淨天空篩選整理自Shubrodeep Banerjee大神的英文原創作品 JavaScript Atomics store() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。