====== Concurrency paradigms ====== ===== Parallel Programming Models and Paradigms ===== http://www.buyya.com/cluster/v2chap1.pdf ===== Shared variables ===== E.W. Dijkstra. [[http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD123.PDF|Cooperating Sequential Processes]]. EWD 123. 1968. Languages that exploit shared variables include //Java//. ===== Synchronous message passing ===== C.A.R. Hoare. [[http://dx.doi.org/10.1145/359576.359585|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)// [[http://www.cis.upenn.edu/~bcpierce/papers/pict-design.ps|An introduction to Pict.]] ===== 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. [[http://citeseer.ist.psu.edu/rd/64820993,174088,1,0.25,Download/http://citeseer.ist.psu.edu/cache/papers/cs/3590/http:zSzzSzwww.dcs.ed.ac.ukzSzhomezSzarwzSzjo.pdf/wilson95jo.pdf|Jo: A Concurrent Constraint Programming Language ]] [[http://citeseer.ist.psu.edu/rd/64820993,95082,1,0.25,Download/http://citeseer.ist.psu.edu/cache/papers/cs/3086/http:zSzzSzwww.isg.sfu.cazSzdfki-pszSzPPCP93.pdf/object-oriented-concurrent-constraint.pdf|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 [[http://delivery.acm.org/10.1145/330000/326908/p518-shearer.pdf?key1=326908&key2=9351600911&coll=GUIDE&dl=GUIDE,ACM&CFID=35483893&CFTOKEN=89210600|Design of a Linda Kernel using Causal Multicast]] ===== 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: [[http://www.agorics.com/Library/joule.html | Joule ]] and [[http://erights.org/| E ]]