Junior — Middle
Kan de uitvoering van een goroutine worden gekoppeld aan een specifiek systeemthread?
sobes.tech AI
Antwoord van AI
In Go (Golang) zijn goroutines niet gekoppeld aan specifieke systeemthreads. De Go-scheduler verdeelt de goroutines zelfstandig over de OS-threads voor een efficiënt gebruik van bronnen.
Echter, als het nodig is om code uit te voeren in de context van een specifiek thread (bijvoorbeeld voor interactie met een C-bibliotheek die oproepen vanuit één thread vereist), kun je de functie runtime.LockOSThread() gebruiken. Deze koppelt de huidige goroutine aan een systeemthread totdat runtime.UnlockOSThread() wordt aangeroepen.
Voorbeeld:
import (
"runtime"
)
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
// code die in één systeemthread moet worden uitgevoerd
}
Maar in de gebruikelijke praktijk is het niet nodig of aanbevolen om een goroutine aan een thread te koppelen, omdat dit de efficiëntie van de scheduler vermindert.