Module Backend.ProcLocker

val setup : unit -> unit

This should be called once before trying to lock Anything.

val try_lock : IR.Procname.t -> [ `AlreadyLockedByUs | `LockedByAnotherProcess | `LockAcquired ]
val unlock : IR.Procname.t -> unit

This will work as a cleanup function because after calling unlock all the workers that need an unlocked Proc should find it's summary already Cached. Throws if the lock had not been taken.

val lock_all : IStdlib.IStd.Pid.t -> string list -> [> `FailedToLockAll | `LocksAcquired of string list ]
val unlock_all : string list -> unit