On 26/12/2013 09:54, Roberto De Ioris wrote:
[...]
Ma come!!!
Le go routine **sono** thread, come tra l'altro viene scritto nei
documenti che hai riportato.

La differenza è che sono thread gestiti dal runtime di Go, con alcune
proprietà che li rendono flessibili per la concorrenza (invece sospetto
che non siano adatti per il parallelismo).


Di base e' cosi' (niente parallelismo), pero' puoi specificare tramite una
variabile d'ambiente (GOMAXPROCS) su quante cpu vuoi "spalmare" le
goroutine (che poi in realta' significa lanciare piu' pthread su cui lo
scheduler distribuisce le goroutine)


Si, lo sapevo.
E' come il runtime di GHC (uno dei migliori, almeno come configurabilità, IMHO), e probabilmente quello di Erlang (che non conosco).

Questo ti permette di parallelizzare alcuni task.


Ho i miei dubbi.
Il problema è che non sai se le tue N goroutine siano effettivamente eseguite su N thread diversi. Ti devi fidare e sperare, anche se ho letto che in questo senso il runtime di Go cerca di ottimizzare.


Sono meglio dei pthread nativi ? boh.


Io, come sempre, preferisco avere gli strumenti di basso livello con API disegnate bene. Questo significa processi, thread e coroutine ("raw", senza runtime per lo scheduling). Poi decido io cosa e come usare di caso in caso.

[...]
Lo goroutine sono thread ? per dare una risposta bisognerebbe capire cosa
si intende con "thread"...


Direi la classica:
stack + copia dei registri + eventuale thread local storage

Proprio il fatto che ogni thread ha bisogno di stack, causa uno dei problemi di utilizzo di memoria efficiente con i "green threads" (basta avere migliaia di green threads che fanno cose non banali).


Ciao  Manlio
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a