Whenever you're ready, walk me through how you'd approach this.
How would you implement a service with only one lock that allows any number of simultaneous reads but blocks writes while reads are happening?