Lock_file_async.FlockSourceFlock has async analogues of functions in Lock_file_blocking.Flock; see there for documentation.
Additionally, here we:
Deferred.Or_error.tval lock_exn :
?lock_owner_uid:int ->
lock_path:string ->
unit ->
[ `Somebody_else_took_it | `We_took_it of t ] Async.Deferred.tlock_exn ?lock_owner_uid ~lock_path () Attempt to take the lock at lock_path. It optionally also sets the owner id to lock_owner_uid.
val lock :
?lock_owner_uid:int ->
lock_path:string ->
unit ->
[ `Somebody_else_took_it | `We_took_it of t ] Async.Deferred.Or_error.tval wait_for_lock_exn :
?abort:unit Async.Deferred.t ->
?lock_owner_uid:int ->
lock_path:string ->
unit ->
t Async.Deferred.twait_for_lock_exn ?abort ?lock_owner_uid ~lock_path () Wait for the lock, giving up once abort becomes determined. It optionally also sets the owner id to lock_owner_uid.
val wait_for_lock :
?abort:unit Async.Deferred.t ->
?lock_owner_uid:int ->
lock_path:string ->
unit ->
t Async.Deferred.Or_error.tSee wait_for_lock_exn