Communicating Sequential Processes, or CSP, is a formal language used to describe parallel systems created by C. A. R. ("Tony") Hoare in the early 1980's and described in his book "Communicating Sequential Processes", published by Prentice-Hall, 1985
CSP describes processes in terms of entities (processes) which interact using events (which can be thought of as messages). It is an important part of CSP that if you hide the interactions between a group of processes, but not the interactions between that group and the "rest of the world" (the environment), that you end up with another process. That is, processes compose.
The representation has two halves: processes can be described in terms of the events they may participate in, and groups of processes can be described in terms of the traces of events which they did participate in. For example, a vending machine which accepts a coin, then delivers some tea, then returns to its previous state may be described by:
VM = coin -> tea -> VM
while the traces of VM are:
< coin, tea >
Much work has been done since the original paper. CSP has been successfully used as the basis for the programing language occam, and in recent years has been extended into a wider domain, for example to address tasks in hardware codesign:
There is a CSP Archive maintained at the Oxford University Programming Laboratory, which is worth investigating.
The Links page contains several other CSP resource links.
Page last modified on 11th July 2003
Pages © WoTUG, or the indicated author. All Rights Reserved.
Comments on these web pages should be addressed to: www at wotug.org