@lucadani7/algonodejs-for-beginners
Version:
Just a simple Node.js package with some basic algorithms perfect for people just starting out. It's got easy-to-understand TypeScript versions of stuff like sorting, searching, math with numbers, and messing with strings.
30 lines (29 loc) • 879 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AtomicIntegerNode = void 0;
class AtomicIntegerNode {
constructor(initial = 0n) {
this.buffer = new SharedArrayBuffer(4); // 4 bytes for Int32
this.view = new Int32Array(this.buffer);
Atomics.store(this.view, 0, initial);
}
getBuffer() {
return this.buffer;
}
get() {
return BigInt(Atomics.load(this.view, 0));
}
set(value) {
Atomics.store(this.view, 0, value);
}
incrementAndGet() {
return BigInt(Atomics.add(this.view, 0, 1));
}
getAndIncrement() {
return BigInt(Atomics.add(this.view, 0, 1) - 1);
}
compareAndSet(expected, updated) {
return Atomics.compareExchange(this.view, 0, expected, updated) === expected;
}
}
exports.AtomicIntegerNode = AtomicIntegerNode;