Communicating Sequential Processes (1978)
September 30, 2023Communicating Sequential Processes (CSP) is a program structuring method that constructs a program as a parallel composition of a fixed number of sequential processes. A process is a sequence of commands.
In 1978 when Hoare proposed CSP, inspecting and updating a common store was widely adopted method for synchronizing multi processors. However, this may lead to expense and unreliability in hardware implementation, and uncertain criterion for choosing a method for synchronization from a greater variety of methods, semaphores like conditional critical regions, and monitors.
Hoare proposed CSP with an ambitious attempt to find a single simple solution to the two problems. Each process does not share any variables with any other processes, and they communicate through their inputs and outputs. A process can be guarded with Dijkstra’s guard. A guarded process is executed only if and when the execution of its guard does not fail.
Remark
Hoare pointed out that the paper failed to suggest any proof methods to verify programs and efficient implementation for CSP. He thought the design of appropriate hardware can solve the second problem. Because one advantage of CSP is that it is free from expense and unreliability in hardware implementation, such hardware must be designed that does not cause the drawbacks.