Senior
Wat is een goroutine? Hoe is het opgebouwd?
sobes.tech AI
Antwoord van AI
Een goroutine is een lichte uitvoeringsstroom in de programmeertaal Go. In tegenstelling tot systeemthreads worden goroutines beheerd door de Go-runtime en hebben ze een zeer kleine stack (begint bij enkele kilobytes en kan dynamisch groeien). Dit maakt het mogelijk om honderden duizenden goroutines gelijktijdig uit te voeren met lage overhead.
Structuur van een goroutine:
- Bij het maken van een goroutine (met de operator
go) plaatst de Go-planner deze in de wachtrij van taken die klaar zijn om uit te voeren. - De Go-runtime gebruikt een M:N planning: M systeemthreads (OS-threads) bedienen N goroutines.
- Goroutines schakelen op runtime-niveau, wat sneller is dan het schakelen tussen systeemthreads.
- Elke thread (M) kan meerdere goroutines (N) uitvoeren, door tussen hen te wisselen bij blokkades of indien nodig.
Voorbeeld van het maken van een goroutine:
func sayHello() {
fmt.Println("Hallo vanaf goroutine")
}
func main() {
go sayHello() // start een goroutine
time.Sleep(time.Second) // wacht zodat de goroutine kan uitvoeren
}