- Global synchronization
- Through barriers
- Often used to separate computation phases
- Point-to-point synchronization
- A process directly notifies another about a certain event on which the latter was waiting
- Producer-consumer communication pattern
- Semaphores are used for concurrent programming on uniprocessor through P and V functions
- Normally implemented through flags on shared memory multiprocessors (busy wait or spin)
P0: A = 1; flag = 1;
P1: while (!flag); use (A);