History of concurrency in programming languages
- Concepts
- Par-begin ... end (independent processes that share some memory, or run independenly)
- fork and join (extension of C and supported by Unix) (independent processes that share some memory, or run independenly)
- Co-routines (first proposed on paper in 1963, implemented in Simula, 1967): a task can suspend and resume another tasks (very low-level concept)
- Semaphores (Dijkstra, 1965) - for controlled sharing of resources
- Monitors - for controlled sharing of resources (a generalization of the semaphore)
- message passing or rendezvous
- Programming languages
- Concurrent Pascal (by Brinch Hansen, 1975) - implementing monitor concept
- Modula-2 (by Wirth, 1978) - implementing monitor concept
- ADA
- Java - implementing monitor concept