val create : unit -> tReturn a fresh mutex.
val lock : t -> unitLock the given mutex. Locks are not assumed to be re-entrant.
val unlock : t -> unitUnlock the mutex. If any threads are attempting to lock the mutex, exactly one of them will gain access to the lock.
val with_lock : t -> (unit -> 'a) -> 'awith_lock t f first obtains t, then computes f (), and finally unlocks t.