module Concurrency:Definition of concurrency primitives.
This light-weight type is independent of the underlying locking
mechanism and can be used if you do not know whether your code
will run with vmthreads, Posix threads, coThreads, etc.
val create :
enter:(unit -> unit) -> leave:(unit -> unit) -> lock
enter: Enter critical section.
leave: Leave critical section. .
val nolock :
val synchronize :
(unit -> lock) -> ('a -> 'b) -> 'a -> 'b
synchronize locker freturns a function
f'which behaves as
fbut whose executions are protected by one lock obtained from
locker. The same lock will be reused for all subsequent uses of
synchronize Mutex.make f is a new function whose executions
will by synchronized by a new lock. Conversely,
synchronize (const my_lock) f is a new function whose executions
will be synchronized by an existing lock
val sync :
lock -> ('a -> 'b) -> 'a -> 'b
sync lock f behaves as
synchronize (const lock) f but slightly faster
val compose :
lock -> lock -> lock
module type BaseLock =
module type Lock =
with type t = M.t