3 ms·
Does this mean channels, like in CSP (what Go does), are unfit for distributed envs because they are synchronous?
by sausagefeet 15y ago
Does this mean channels, like in CSP (what Go does), are unfit for distributed envs because they are synchronous?
- nicolast 15y agoWhy would CSP be 'synchronous'? There's a difference between how things appear (API) and how the implementation works: it's certainly possible to have an API which looks synchronous, yet everything is async at runtime. Think about Haskell's do-notation with GHC's IO manager, the Erlang approach, something like Gevent/Greenlets in Python,...
- sausagefeet 15y agoBecause, AFAIK, CSP is defined by synchronous message passing: - CSP message-passing fundamentally involves a rendezvous between the processes involved in sending and receiving the message, i.e. the sender cannot transmit a message until the receiver is ready to accept it. - Programs in the original CSP were written as a parallel composition of a fixed number of sequential processes communicating with each other strictly through synchronous message-passing. - The PAT process language extends CSP with support for ..., asynchronous message passing, ... http://en.wikipedia.org/wiki/Communicating_sequential_processes http://en.wikipedia.org/wiki/Communicating_sequential_proces... GHC's IO, Erlang, and Gevent are not implementations of CSP. Go is, though, which makes me wonder if Go is not a good tool to implement distribution in if they added inter-vm channels.