Go

Goroutine di base

Goroutine, parola chiave go, sync.WaitGroup, runtime.GOMAXPROCS, goroutine leak

20 domande da colloquio·
Junior
1

Che cos'è una goroutine in Go?

Risposta

Una goroutine è una funzione che viene eseguita in modo concorrente con altre funzioni, gestita dal runtime di Go anziché dall'OS. È estremamente leggera (pochi KB di stack iniziale) rispetto a un thread OS (diversi MB). Lo scheduler di Go può multiplexare migliaia o persino milioni di goroutine su un numero limitato di thread OS, rendendo la concorrenza molto accessibile in Go.

2

Come avviare una nuova goroutine in Go?

Risposta

La parola chiave go seguita da una chiamata di funzione avvia una nuova goroutine. Per esempio, 'go myFunction()' oppure 'go func() { ... }()' per una funzione anonima. La goroutine viene eseguita immediatamente in parallelo con il codice chiamante. Attenzione: la funzione main non attende automaticamente che le goroutine avviate terminino.

3

Qual è la differenza principale tra una goroutine e un thread OS?

Risposta

Una goroutine consuma circa 2 KB di stack iniziale, mentre un thread OS richiede tipicamente 1-2 MB. Il runtime di Go gestisce lo scheduling delle goroutine nello spazio utente (M:N scheduling), multiplexando migliaia di goroutine su pochi thread OS. Questo permette di creare milioni di goroutine senza sovraccaricare il sistema, a differenza dei thread OS che sono limitati dalle risorse.

4

Cosa succede se il programma principale termina prima che una goroutine finisca?

5

Come gestisce il runtime di Go l'esecuzione delle goroutine?

+17 domande da colloquio

Padroneggia Go per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis