Junior — Middle
Is het in Go verplicht dat er automatisch een wijziging van de uitvoeringscontext plaatsvindt tussen goroutines?
sobes.tech AI
Antwoord van AI
In Go vindt de automatische contextwisseling tussen goroutines plaats, maar niet in de klassieke zin van preemptive multitasking, zoals in besturingssystemen.
Goroutines zijn lichte threads die worden beheerd door de Go-runtime. De Go-scheduler wisselt de uitvoering tussen goroutines om de systeemthreads efficiënt te gebruiken.
Kenmerken:
- De Go-scheduler gebruikt coöperatief multitasking: de goroutine moet de controle overdragen, bijvoorbeeld bij het aanroepen van blokkerende operaties of functies die expliciet yielden.
- Sinds Go 1.14 is beperkte ondersteuning voor preemption toegevoegd, waardoor de scheduler een goroutine kan onderbreken als deze lange tijd geen controle overdraagt.
Op deze manier gebeurt de contextwisseling tussen goroutines automatisch en transparant voor de ontwikkelaar, maar met enkele kenmerken die verschillen van klassieke besturingssystemen.