Readers and Writers
You have a database full of records
Many threads may read the same record at the same time
If any thread is writing the record, then no other thread may read or write
- when a reader enters, it must block if there is a writer inside
- when a writer enters, it must block if there is anyone inside