let mutex_create =
ref (fun () ->
let r = ref false in
let try_lock () =
if !r then begin
false
end else begin
r := true;
true
end
in
let lock () =
if not (try_lock ()) then
raise Lock_failure
in
let unlock () =
r := false
in
{
lock = lock;
try_lock = try_lock;
unlock = unlock;
})