And BTW, since you mentioned write-rarely, I would also like to mention that the reader writer lock does have a mechanism to prevent starvation. For example...
If a bunch of readers come in, they will all be given access. If a writer comes in, it will be queued behind the readers. If more readers come in, they will *not* be allowed to skip the writer, even though, technically, they can work in parallel with the first batch of readers.
The reason is to prevent starvation of the writer. It is theoritically possible for readers to keep coming, and if skipping is allowed, it is possible for the writer to never get the lock. So, no skipping...
Henry