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