One of the most successful models for providing high-level linguistic support for concurrency comes from Hoare’s Communicating Sequential Processes, or CSP. Occam and Erlang are two well known languages that stem from CSP.
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
1. How does your xchan proposal differ from the actor model. As far as I can tell by reading your proposal an xchan is an actor.
2. Herb Sutter's opinion that ALL concurrent systems should be async is nonsense. I say that of course because go and plan9's thread model implements synchronous concurrency in a way that doesnt suck. The actor model has many setbacks of its own and by no means is an asynchronous system model guaranteed to produce a more efficient, responsive concurrent program than a program using a synchronous system model .
3. The reality is that you have to design your program so that it effectively exploits the asynchronous nature of the actor model. Just like you have to design synchronous concurrent systems so there isn't heavy lock contention. Anytime we observe the efficiency of modern concurrent system or theoretical model, we always find that the most devastating deficiency in a concurrent system is the developer inability to designing a correct, efficient, simple, scalable system with the tools he is currently provided.
Rob Pike in his talk "Concurrency isn't Parallelism" points this out by suggesting that the most fundamentally damning problem with concurrency is that we don't have an accurate understanding of what concurrency actually is in its fundamentally purest form. Rob suggests that the best way to understand concurrency is to view it as a foundational principle of software design; rather than a bunch of low level, complex, and exploitable features we can add-on to our program. (multiple cores, hyper threading, GPGPU, pthreads, actors, etc).
Therefore taking our new understanding of concurrency into consideration, it should become obviously clear that "concurrency vs concurrency" is irrelevant because you wont learn anything useful when you compare a method against a mindset.
Can anyone link to a simple golang.org/play examples that illustrates the scenario Bienlein is describing?
My main concern is that blocking code is easier to read and understand than nonblocking code. Paying the complexity price of concurrency when it isn't useful obfuscates code for no real purpose.
Nonblocking callers can easily spawn new futures as needed by making explicit "async" calls. But blocking callers can only synchronize if the asynchronous code properly plumbs through a joinable future or return channel - and, as Sutter's slides demonstrate, it's easy to implement that plumbing incorrectly.
--
You received this message because you are subscribed to a topic in the Google Groups "golang-nuts" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/golang-nuts/Q8Mz2oR_UZQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to golang-nuts...@googlegroups.com.