Something went wrong. Try again.
Offload functions to worker threads with shared memory primitives for Node.js.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import { registerSync } from './reconstruct.ts';
export class Uint16Atomic { static readonly byteSize = 2; static readonly byteAlignment = 2; private readonly view: Uint16Array;
constructor(buffer?: SharedArrayBuffer, byteOffset?: number) { const buf = buffer ?? new SharedArrayBuffer(2); const offset = byteOffset ?? 0; this.view = new Uint16Array(buf, offset, 1); }
load(): number { return Atomics.load(this.view, 0); }
store(value: number): void { Atomics.store(this.view, 0, value); }
add(value: number): number { return Atomics.add(this.view, 0, value); }
sub(value: number): number { return Atomics.sub(this.view, 0, value); }
and(value: number): number { return Atomics.and(this.view, 0, value); }
or(value: number): number { return Atomics.or(this.view, 0, value); }
xor(value: number): number { return Atomics.xor(this.view, 0, value); }
exchange(value: number): number { return Atomics.exchange(this.view, 0, value); }
compareExchange(expected: number, replacement: number): number { return Atomics.compareExchange(this.view, 0, expected, replacement); }
[Symbol.for('moroutine.shared')](): { tag: string; buffer: SharedArrayBuffer; byteOffset: number } { return { tag: 'Uint16Atomic', buffer: this.view.buffer as SharedArrayBuffer, byteOffset: this.view.byteOffset }; }}
registerSync('Uint16Atomic', Uint16Atomic);