3 ms·
The differences between the original paper and the book are interesting too, I'm told that roughly reflects things he learned from the occam production effort.
by JonChesterfield 3y ago
The differences between the original paper and the book are interesting too, I'm told that roughly reflects things he learned from the occam production effort.
In particular I suspect there is a useful correlation between synchronous message passing and maintaining program invariants which is obfuscated if your primitive is asynchronous queues.
- jgrahamc 3y agoWhat would you highlight? The big thing from my perspective was that there are no channels in the original CSP. There's just synchronization on shared events. Asynchronous queues are a good way of delaying deadlocks!
- JonChesterfield 3y agoThe 1978 paper proposes a reasonable set of primitives and then walks through prose examples with them. The book proposes roughly the same primitives (channels are the big change, but stop is barely in the paper) and describes them in a formal notation for state machines. It's the difference between a sketch of a plausible idea and writing down the mathematics. Related though much later, ocaml https://github.com/ocaml-multicore/reagents https://github.com/ocaml-multicore/reagents observed that the send/recv primitives make less sense than a swap primitive. Between occam and the current ocaml effort, concurrent ML is the same sort of model with the details really well thought through (e.g. a thread executing stop gets garbage collected).