Synchronization
Parallelism needs synchronization.
Avoid Data Race.
Synchronization problems are very cool and common:
We also really look into synchronization from a software implementation perspective.
Both the sender and receiver can be blocking or nonblocking.
3 common combinations:
- Blocking send, blocking receive: Oftentimes referred to as a rendezvous, used for tight synchronization between processes
- Nonblocking send, blocking receive: Most useful combination.
- The send process can send one or more messages to a variety of destinations as quickly as possible.
- The receive process must receive a message before it can do useful work needs to be blocked until such a message arrives
- Nonblocking send, nonblocking receive: Neither party is required to wait