BACKGROUND
Parallelism in programming languages was originally investigated as a branch of operating systems programming.
Basic mechanisms for process synchronization and communication
- semaphores,
- conditional critical regions,
- monitors, and
- send and receive.