Noticed by Nadav.
Similar to std::shared_mutex, allows shared and exclusive locking of a resource (also known as a reader/writer lock). This implementation is strictly FIFO.