Ewald Cress looks at SOS_RWLock, a reader-writer lock (at least the pre-2016 version):
This lock class can best be appreciated by comparing it to a mutex. Like the mutex, a reader-writer lock can only be acquired in exclusive mode by one requestor at a time, but instead of only exposing this exclusive-acquire (Writer) option, it alternatively allows acquisition in shared (Reader) mode. This stuff is completely natural to us database folks of course, because the semantics is a subset of the behaviours we get from familiar database locks.
Basic rules of the road:
Any number of simultaneous “clients” can share ownership of the lock in Read mode.
Readers block writers.
Writers block readers and other writers.
Blocking means that the requesting worker gets suspended (scheduled off the processor) and accrues a wait of a type specified in the lock acquisition request.
There’s a huge amount of detail here, and I for one am glad that there isn’t a quiz later..