Processos comunicants seqüencials, de sigles anglosaxones CSP (Communicating sequential processes), és un model de Programació d'ordinadors de sistemes concurrents basat en la comunicació entre processos. Definició del model:[1]
- Estructures de control seqüencials: ordres amb guarda de Dijkstra: <condició o guarda> → <acció>
- Execució concurrent dels processos.
- Ordres especials d'entrada/sortida entre processos: Pj ! i Pi? X
- La comunicació té lloc quan un procés Pi nomena a un altre procés Pj com a destí de la seva sortida i Pj nomena Pi com a origen de la seva entrada.
- No hi ha buffering (coixí de missatges). Els processos que han d'enviar o rebre missatges queden bloquejats fins que aconsegueixen la comunicació.
- No es creen ni es destrueixen processos durant l'execució dels programes (són estàtics).
- No hi ha recursivitat.
- Occam Pi
- CSP amb àlgebra de processos "calcul Pi" on els noms dels canals poden ser l'objecte transmès com a missatge.[2]
- JoCaml
- llenguatge funcional, extensió de OCaml, que implementa l'àlgebra de processos anomenada "càlcul Join" on les guardes són patrons de sincronisme (simultaneïtat de missatges a diversos canals), amb concurrència per pas de missatges asíncrons i síncrons.
- llenguatge Hume
- implementa concurrència per pas de missatges i sincronia de canals. Els processos s'agrupen en autòmats (construcció box) on l'entrada és una tupla de canals amb un conjunt d'alternatives de patrons de sincronisme (càlcul Join) i l'estat és a les bústies modificades per realimentació. Les comunicacions s'especifiquen com a cablejat entre autòmats (instrucció wire) i es poden descriure en un entorn gràfic IDE.[3][4]
- Communicating Haskell Processes
- biblioteca de Haskell que implementa CSP basada en mònades.[5]
- Java JCSP
- "Communicating Sequential Processes for Java" de la Univ. de Kent[6]
- Join Java
- implementació de càlcul Join sobre Java.[7]
- Poliphonic C#
- Implementació del Join calculus per a C#,[8] integrat al llenguatge Cw.[9]