Control.Concurrent.MVarLock

data Lock

newLock

acquireLock

releaseLock

withLock