Am Montag, 6. Januar 2020 09:54:49 UTC+1 schrieb Brian Candler:
>
> On Monday, 6 January 2020 08:36:56 UTC, ffm...@web.de wrote:
>>
>> in Amoeba a thread can be suspended, thereafter be sent to some other 
>> machine where it is resumed.
>>
>
> Thread migration doesn't solve the OP's issue, because threads share 
> memory with other threads: passing a copy of something is not the same as 
> passing a pointer to something, unless you have a way for writes through a 
> pointer to act on the original memory.
>

Yes, you are right with that. I was dreaming a bit ... To extend the 
channel-based communication model in Go to a distributed setting you need 
"all or nothing" garanteed delivery of an item that is inserted into some 
distributed channel. Otherwise, in case of item to be placed in a 
distributed channel gets lost, the application may sit.

What is useful here is supervision as in the actor model (see 1, 2). If two 
parties comminucate through a network and get communication problems, a 
third party resets >both< communication parties that thereafter start anew. 
This is the approach that made applications written in Erlang 
fault-tolerant and highly stable.

However, if you want to apply supervision for distributed Go channels you 
have to change from channels to actors - at least behind the scenes of the 
distributed channels. AFAIK, no one has done something like that for 
anything writen in Go. Nats is very reliable, but does not provide 
guaranteed "all or nothing" delivery.


[1] https://erlang.org/doc/design_principles/sup_princ.html
[2] https://doc.akka.io/docs/akka/2.5/general/supervision.html

-- 
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+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/194f0772-0940-4515-850d-da0b410bb7f8%40googlegroups.com.

Reply via email to