In che modo altre goreutine possono continuare ad eseguire mentre si richiama un syscall? (quando si utilizza GOMAXPROCS = 1)
Per quanto ne so, quando si richiama un syscall il thread lascia il controllo fino a quando non viene restituito syscall. Come si può raggiungere questa concorrenza senza creare un thread di sistema per goroutine di blocking-on-syscall?Come funzionano le goroutine? (o: goroutines e relazione sui thread del sistema operativo)
Dal documentation:
Goroutines
Si chiamano goroutines perché gli attuali termini-fili, coroutine, processi, e così via, trasmettere connotazioni imprecisi. A goroutine ha un modello semplice: è una funzione che esegue contemporaneamente con altre goroutine nello stesso spazio di indirizzamento. È leggero, che costa poco più dell'allocazione dello spazio di stack. E gli stack iniziano in piccolo, quindi sono economici e crescono allocando (e liberando) lo storage dell'heap come richiesto.
Le goroutine vengono multiplexate su più thread del sistema operativo, quindi se si deve bloccare , ad esempio mentre si attende l'I/O, altri continuano a funzionare. Il loro design nasconde molte delle complessità della creazione dei thread e della gestione di .
Questo post del blog di Dave Cheney's REALMENTE spiega https://dave.cheney.net/2015/08/08/performance-without-the-event-loop –