1 | export declare type PromiseResolve<T> = (value: T | PromiseLike<T>) => void;
|
2 | export declare type PromiseReject = (reason?: any) => void;
|
3 | export declare type Task<T> = () => Promise<T>;
|
4 | export declare type Record<T> = [Task<T>, PromiseResolve<T>, PromiseReject];
|
5 | export declare class Mutex<T> {
|
6 | private busy;
|
7 | private readonly queue;
|
8 | synchronize(task: Task<T>): Promise<T>;
|
9 | dequeue(): Promise<void> | undefined;
|
10 | execute(record: Record<T>): Promise<void>;
|
11 | }
|