October 2015
Beginner to intermediate
400 pages
14h 44m
English
sync.RWMutex
In a fit of anxiety after seeing his $100 deposit vanish without a trace,
Bob writes a program to check his bank balance
hundreds of times a second. He runs it at home, at work, and on his
phone. The bank notices that the increased traffic is delaying deposits
and withdrawals, because all the Balance requests run sequentially,
holding the lock exclusively and temporarily preventing other goroutines from
running.
Since the Balance function only needs to read the state of the
variable, it would in fact be safe for multiple Balance calls to run
concurrently, so long as no Deposit or Withdraw call is running. In this scenario we need a special kind of lock that allows read-only operations to proceed in parallel ...