locks manager
an fully lock api for one-master, one-master-with-multi-cluster.
flow (Single process)
lm = new LocksManager();
|
lm.appendLock(ids:string[])
|
(find PER locks by ids. and add ids as CUR locks)
|
(return locksRef)
|
await locksRef.getPreJobsDone()
|
(await Promise.all(PER locks))
|
...do your jobs
|
lm.finishAll()
|
(each CUR locks do unlock. => promise.resolve() )
multi-Progress
there have an default lm
in master process. and child process will share this lm
.
in master process:
;// register an value getter function. and also setup.// or may be just return undefined. it's ok. save the ipc.registerLocksManagerDefaultValueGetter;
in cluster(worker) process:
;;await lm.appendLockids as string;await lm.getPreJobsDone;// do your jobslm.finishAll;