Operating systems synchronization / synchronizing threads
Avoid data races .
Root of problem: Unsynchronized access to a shared, modifiable resource.
Solution:
We formalize it with: Critical section (CS)
Sync access to shared data: mutex
Sync access for concurrent actions: Conditional Variable
High level mechanism: Semaphore interface