9.4 Memory Synchronization
You may wonder why the Balance method needs mutual exclusion,
either channel-based or mutex-based.
After all, unlike Deposit, it consists only of a single
operation, so there is no danger of another goroutine executing “in the
middle” of it.
There are two reasons we need a mutex.
The first is that it’s equally important that Balance not
execute in the middle of some other operation like Withdraw.
The second (and more subtle) reason is that synchronization is about
more than just the order of execution of multiple goroutines;
synchronization also affects memory.
In a modern computer there may be dozens of processors, each with its own local cache of the main memory. For efficiency, writes to memory are buffered within ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access