Maison >développement back-end >Golang >Changement de contexte Golang

Changement de contexte Golang

WBOY
WBOYavant
2024-02-06 09:10:08846parcourir

Golang 上下文切换

Contenu de la question

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 ?


Bonne réponse


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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer