Maison >développement back-end >Golang >Changement de contexte Golang
J'ai une question très basique : Le contexte du planificateur du système d'exploitation peut-il basculer entre les threads au niveau utilisateur mappés au niveau du noyau ?
Supposons que goscheduler planifie une goroutine A sur le thread du noyau. Maintenant, la goroutine A effectue un appel sysblock, qui change de contexte en premier : le système d'exploitation ou le planificateur go ?
Le planificateur Go gère les goroutines, qui sont réutilisées sur les threads au niveau du système d'exploitation. Le planificateur Go peut effectuer efficacement des changements de contexte entre Goroutines, par exemple lorsqu'un Goroutine effectue un appel système bloquant, sans impliquer le planificateur du système d'exploitation. Cependant, il est important de noter qu'en raison de facteurs tels que le découpage temporel, le planificateur du système d'exploitation peut interrompre et effectuer indépendamment des changements de contexte. Par conséquent, le moment exact d’un changement de contexte et l’implication du planificateur du système d’exploitation peuvent ne pas être déterminés avec précision du point de vue du programme Go.
Lectures complémentaires :
proc.go dans le code source de Golang
Go Scheduler : implémentation d'un langage de concurrence léger
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!