@toolbuilder/semaphore
Version:
Basic semaphore and mutex with both sync and async acquire methods.
35 lines • 1.08 kB
TypeScript
/**
* 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