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..