Junior — Middle
Wat is het verschil tussen het uitvoeren van code in een goroutine en het werken van een systeemthread op het niveau van het besturingssysteem?
sobes.tech AI
Antwoord van AI
Goroutines in Go zijn lichte threads die worden beheerd door de Go-runtime, niet door het besturingssysteem. De belangrijkste verschillen:
- Lichtgewicht: Goroutines gebruiken zeer weinig geheugen (meestal enkele kilobytes stack), terwijl systeemthreads veel meer bronnen vereisen.
- Planning: De scheduler voor goroutines is ingebouwd in de Go-runtime en verdeelt goroutines over systeemthreads, wat een efficiënt gebruik van de CPU mogelijk maakt.
- Aanmaak en schakelen: Het aanmaken en schakelen tussen goroutines is sneller dan tussen systeemthreads, omdat geen kerncontextwissel nodig is.
Voorbeeld:
func main() {
go func() {
fmt.Println("Goroutine")
}()
fmt.Println("Hoofdthread")
time.Sleep(time.Second) // Wacht tot de goroutine klaar is
}
Hier wordt de goroutine binnen het proces gestart, maar komt niet direct overeen met een apart systeemthread.