UNPKG

@toolbuilder/semaphore

Version:

Basic semaphore and mutex with both sync and async acquire methods.

35 lines 1.08 kB
/** * Simple mutex class. * @example * const mutex = new Mutex() * const release = await mutex.acquire() * release() // to release mutex */ export class Mutex { /** @private */ private _semaphore; /** * Determine if the lock is available. * @returns {boolean} - true if lock is available, false otherwise */ available(): boolean; /** * Get a lock if available. * * @returns {() => void} - if the lock is available, returns a * function to release it. Otherwise returns null. The release function can * be called multiple times, it will only release once. * @example * const mutex = new Mutex() * const release = mutex.acquireSync() * if (release) release() */ acquireSync(): () => void; /** * Acquire a lock. * @returns {PromiseLike<() => void>} - returns a Promise that resolves to a release function. The release * function can be called multiple times, it will only release once. */ acquire(): PromiseLike<() => void>; } //# sourceMappingURL=mutex.d.ts.map