
Goroutine di base
Goroutine, parola chiave go, sync.WaitGroup, runtime.GOMAXPROCS, goroutine leak
1Che cos'è una goroutine in Go?
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.
2Come avviare una nuova goroutine in Go?
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.
3Qual è la differenza principale tra una goroutine e un thread OS?
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.
Cosa succede se il programma principale termina prima che una goroutine finisca?
Come gestisce il runtime di Go l'esecuzione delle goroutine?
+17 domande da colloquio
Altri argomenti di colloquio Go
Fondamenti di Go
Strutture dati in Go
Interfacce in Go
Gestione degli errori
Channels
Go Modules
Server HTTP
Client HTTP
Codifica JSON
Database/SQL
Pacchetto context
Testing
Pattern di concorrenza
Primitive di sincronizzazione
Framework web Go
Progettazione di API REST
gRPC
Reflection
Gestione della memoria
Ottimizzazione delle prestazioni
Generics
Go Design Patterns
Microservices
Sicurezza e autenticazione
Docker & Containerization
Kubernetes Basics
Go Avanzato
Sviluppo CLI
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