Readers/Writers Impl. Notes
Note that:
1. The first reader blocks if there is a writer; any other readers who try to enter will then block on mutex.
2. Once a writer exists, all readers will fall through.
3. The last reader to exit signals a waiting writer.
4. When a writer exits, if there is both a reader and writer waiting, which goes next depends on the scheduler.