sig
  type mutex
  module Control : Mutex_control
  val create : unit -> Duppy.Monad.Mutex.Mutex_t.mutex
  val lock : Duppy.Monad.Mutex.Mutex_t.mutex -> (unit, 'a) Duppy.Monad.t
  val try_lock : Duppy.Monad.Mutex.Mutex_t.mutex -> (bool, 'a) Duppy.Monad.t
  val unlock : Duppy.Monad.Mutex.Mutex_t.mutex -> (unit, 'a) Duppy.Monad.t
end