Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Atomics.store() trong JavaScript

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, BigUint64Array view của SharedArrayBuffer.
  • 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ứcHành độngTrả về
store(arr, i, val)Ghi val vào arr[i]val (giá trị mới)
add(arr, i, val)arr[i] += valGiá trị cũ tại arr[i]
exchange(arr, i, val)Thay arr[i] = valGiá trị cũ tại arr[i]
compareExchange(arr, i, expected, val)Nếu arr[i] === expected thì gán valGiá trị cũ tại arr[i]

Lưu ý

  • Chỉ dùng với SharedArrayBuffer — không dùng với ArrayBuffer thườ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(...).