Control.Concurrent.ReadWriteLock
data RWLock
new
newAcquiredRead
newAcquiredWrite
acquireRead
releaseRead
withRead
waitRead
tryAcquireRead
tryWithRead
acquireWrite
releaseWrite
withWrite
waitWrite
tryAcquireWrite
tryWithWrite