On Sat, 2015-03-14 at 10:11 -0700, Andrei Alexandrescu via Digitalmars-d wrote: > On 3/14/15 2:02 AM, Russel Winder via Digitalmars-d wrote: > > On Fri, 2015-03-13 at 07:55 -0700, Andrei Alexandrescu via Digitalmars-d > > wrote: > >> On 3/13/15 6:45 AM, Russel Winder via Digitalmars-d wrote: > >>> The removal of shared memory multi-threading in favour of using > >>> processes and channels should never be underestimated as a Really Good > >>> Thing™ that other native code languages (*) have failed to do anything > >>> about. Thus Go wins, others lose. > >> > >> That's a marketing success as well. Go didn't "remove" shared memory > >> multi-threading, it just unrecommends it. That's quite unremarkable from > >> a programming language design standpoint, but as discussed that's not > >> always crucial for success. -- Andrei > > > > I think you need to show a bit of Go code that uses threads to be able > > to back up that claim. > > package main > > type Data struct { > i int > } > > func func1(c chan *Data ) { > var t *Data; > t = <-c > println(t) > } > > func func2(c chan *Data ) { > var t *Data; > t = <-c > println(t) > } > > func main() { > c := make(chan *Data) > t := Data{10} > go func1(c) > c <- &t > go func2(c) > c <- &t > println(&t) > } > I see no threads in this code! :-)
But yes, it certainly shows you can create shared-memory "multi-threading" this way, but anyone actually doing it would be being very silly. Sending addresses down multiple channels is obvious here and definitely not the right thing to do unless the datum contains an embedded lock which is then used. cf. https://talks.golang.org/2012/10things.slide#3 It would be better if channels could only accept value types, and not reference types. Go is only a CSP-like, it isn't CSP. cf Python-CSP and PyCSP, not to mention JCSP and GPars. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.win...@ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
signature.asc
Description: This is a digitally signed message part