Atomics.store() ghi giá trị vào vị trí chỉ định của SharedArrayBuffer (typed array) theo cách atomic — đảm bảo không bị race condition khi nhiều worker cùng truy cập.
Cú pháp
Atomics.store(typedArray, index, value);
Tham số
typedArray:Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Arrayview củaSharedArrayBuffer.index: Vị trí (integer).value: Giá trị số để ghi.
Trả về
Giá trị đã ghi (value).
Ví dụ
<script>
// Tạo SharedArrayBuffer 25 bytes
const buffer = new SharedArrayBuffer(25);
const arr = new Uint8Array(buffer); // View 8-bit unsigned int
// Giá trị ban đầu tại index 1
arr[1] = 7;
// Atomic store: ghi 3 tại index 1, trả về giá trị ghi (3)
const stored = Atomics.store(arr, 1, 3);
document.write('Giá trị ghi: ' + stored + '<br>'); // 3
// Xác nhận bằng atomic load
document.write('Giá trị tại index 1: ' + Atomics.load(arr, 1)); // 3
</script>
Kết quả
Giá trị ghi: 3 Giá trị tại index 1: 3
So sánh: store vs add vs exchange
| Phương thức | Hành động | Trả về |
|---|---|---|
store(arr, i, val) | Ghi val vào arr[i] | val (giá trị mới) |
add(arr, i, val) | arr[i] += val | Giá trị cũ tại arr[i] |
exchange(arr, i, val) | Thay arr[i] = val | Giá trị cũ tại arr[i] |
compareExchange(arr, i, expected, val) | Nếu arr[i] === expected thì gán val | Giá trị cũ tại arr[i] |
Lưu ý
- Chỉ dùng với
SharedArrayBuffer— không dùng vớiArrayBufferthường. - Yêu cầu header COOP/COEP trên server để bật SharedArrayBuffer (security policy).
- Chủ yếu dùng trong Web Workers chia sẻ bộ nhớ.
- Không phải constructor — gọi static:
Atomics.store(...).