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

Phương thức Atomics.or() trong JavaScript

Đối tượng Atomics cung cấp các thao tác bitwise nguyên tử cho SharedArrayBuffer. Phương thức Atomics.or() thực hiện phép OR bitwise giữa giá trị tại vị trí chỉ định và giá trị cho trước, lưu kết quả và trả về giá trị cũ.

Cú pháp

Atomics.or(typedArray, index, value)
  • typedArray: Mảng kiểu số nguyên (Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array)
  • index: Vị trí trong mảng
  • value: Giá trị để OR bitwise

Ví dụ 1

const buffer = new SharedArrayBuffer(16);
const data = new Uint8Array(buffer);
data[0] = 20; // 00010100

console.log(Atomics.or(data, 0, 30)); // 20 (giá trị cũ)
console.log(Atomics.load(data, 0));   // 30 (00011110 = 20 | 30)

Ví dụ 2

const buffer = new SharedArrayBuffer(16);
const data = new Uint8Array(buffer);
data[0] = 2;  // 00000010

console.log(Atomics.or(data, 0, 7));  // 2 (giá trị cũ)
console.log(Atomics.load(data, 0));   // 7 (00000111 = 2 | 7)

Bảng chân trị OR

aba | b
000
011
101
111

Ứng dụng thực tế

  • Thiết lập cờ (flags) trong bitmask nguyên tử
  • Bật các bit quyền hạn, trạng thái không bị race condition
  • Triển khai bộ lọc Bloom (Bloom filter) đồng thời

Lưu ý

  • Chỉ hoạt động với kiểu số nguyên (không hỗ trợ Float32Array, Float64Array)
  • Thao tác nguyên tử - an toàn cho đa luồng
  • Trả về giá trị trước khi cập nhật