dahlia-concurrency
Version:
High-level concurrency primitives and patterns for Node.js using worker_threads (queues, semaphore, mutex, worker pool, scheduler, and more)
32 lines (23 loc) • 645 B
TypeScript
import { Mutex } from "./mutex";
export class RwLock {
private reader: number;
private writer: boolean;
private readMutex: Mutex;
private writeMutex: Mutex;
private politics: boolean;
private waitingWriters?: number;
private readerGate?: Mutex;
constructor(
readMutexBuffer: SharedArrayBuffer,
writeMutexBuffer: SharedArrayBuffer,
politics?: boolean, // true = fair, false = greedy
);
readLock(): void;
writeLock(): void;
readUnlock(): void;
writeUnlock(): void;
private readLockGreedy(): void;
private readLockFair(): void;
private writeLockGreedy(): void;
private writeLockFair(): void;
}