Table of Contents
Concurrency paradigms
Parallel Programming Models and Paradigms
Shared variables
E.W. Dijkstra. Cooperating Sequential Processes. EWD 123. 1968.
Languages that exploit shared variables include Java.
Synchronous message passing
C.A.R. Hoare. Communicating Sequential Processes . Communications of the ACM, 21(8):666-677, August 1978.
Widely referred as CSP.
Languages that exploit synchronous message passing include Occam and Ada.
Asynchronous message passing
Languages that exploit asynchronous message passing include Pict and Erlang.
Relavent information: Kahn process networks (KPN) and Synchronous data flow (SDF)
Concurrent constraint programming
An example of a language that exploits this paradigm is ccp - concurrent constraint programming language.
Jo , Oz and Mozart are examples of concurrent constraint programming language.
Jo: A Concurrent Constraint Programming Language
Object-Oriented Concurrent Constraint Programming in Oz
One extension of this language has also been introduced with temporal/timed constraints and is called tccp - timed concurrent constraint programming language. The motivation was to use this language in real-time/reactive systems.
Introduced by F.S. de Boer et al.
A Timed Concurrent Constraint Language - DOI: http://dx.doi.org/10.1006/inco.1999.2879
Coordination Model
Languages that exploit coordination model include Linda.
Coordination Langauges and their Significance http://www.caip.rutgers.edu/~virajb/readinglist/coordinationlang.pdf Communications of the ACM(1992),Carriero Nicholas
Wells, George. Coordination Languages: Back to the Future with Linda. Rhodes University. http://wcat05.unex.es/Documents/Wells.pdf
Actor Model
The Actor Model originated in a 1973 paper http://dli.iiit.ac.in/ijcai/IJCAI-73/PDF/027B.pdf introduced by Carl Hewitt, Peter Bishop, and Richard Steiger.
Languages imploying the Actor Model include: Act 1, 2 and 3, E programming language, Erlang, Gambit-C (with Termite), Io language, Ptolemy Project, Rebeca Modeling Language, SALSA, Scala, ABCL/1, ABCL/f, Acore.
Promise pipelining
Promise refers to an object that acts as a proxy for a result that is initially not known, usually because the computation of its value has not yet completed.
It was introduced in 1977 in a paper by Henry Baker and Carl Hewitt: Laws for Communicating Parallel Processes.
Languages also supporting promise pipelining include: Joule and E