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

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

Đối tượng Atomics cung cấp các thao tác bitwise nguyên tử. Phương thức Atomics.xor() thực hiện phép XOR bitwise (OR độc quyền) 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.xor(typedArray, index, value)
  • typedArray: Mảng kiểu số nguyên
  • index: Vị trí trong mảng
  • value: Giá trị để XOR

Ví dụ cơ bản

const buffer = new SharedArrayBuffer(16);
const data = new Uint8Array(buffer);
data[0] = 30; // 00011110

const old = Atomics.xor(data, 0, 3); // 3 = 00000011
console.log(old);                    // 30 (giá trị cũ)
console.log(Atomics.load(data, 0));  // 29 (00011101 = 30 ^ 3)

Bảng chân trị XOR

aba ^ b
000
011
101
110

XOR có tính chất: a ^ b ^ b = a (phép đảo ngược chính nó)

Ứng dụng thực tế

  • Đảo bit (toggle flags) nguyên tử: bật/tắt cờ an toàn đa luồng
  • Mã hóa đơn giản: XOR cipher (stream cipher)
  • Checksum/Parity: Cập nhật parity bit nguyên tử
  • Lock-free algorithms: Đánh dấu trạng thái (busy/idle) bằng cách flip bit

Ví dụ: Toggle flag an toàn

const FLAG_BUSY = 0x01; // Bit 0

function toggleBusy(flagsArray, index) {
  // Đảo bit 0 nguyên tử
  const old = Atomics.xor(flagsArray, index, FLAG_BUSY);
  const wasBusy = (old & FLAG_BUSY) !== 0;
  const nowBusy = !wasBusy;
  return nowBusy;
}

Lưu ý

  • Chỉ hỗ trợ kiểu số nguyên
  • Thao tác nguyên tử - an toàn cho đa luồng
  • Trả về giá trị trước khi cập nhật
  • Tính chất tự đảo ngược làm XOR hữu ích cho toggle