A synchronous mutual exclusion primitive useful for protecting shared data
A synchronization primitive which can be used to run a one-time initialization.
A synchronous reader-writer lock