Junior — Middle
In quali casi una goroutine termina l'esecuzione e trasferisce il controllo a un'altra?
sobes.tech AI
Risposta dell'AI
In Go, una goroutine termina l'esecuzione e passa il controllo ad un'altra goroutine nei seguenti casi:
- Quando la goroutine chiama esplicitamente una funzione che la blocca (ad esempio, leggere da un canale vuoto).
- Utilizzando la parola chiave
runtime.Gosched(), che cede volontariamente il processore ad altre goroutine. - Quando la goroutine termina la sua funzione (ritorna dalla funzione), smette di eseguire.
Il pianificatore di goroutine di Go cambia automaticamente l'esecuzione tra le goroutine, garantendo la concorrenza. Ad esempio, quando si blocca in operazioni di input/output o si attende dati da un canale, la goroutine corrente viene sospesa e il controllo viene trasferito ad un'altra.