Sobes.tech
Junior — Middle

Le planificateur du système d'exploitation suspend-il obligatoirement l'exécution d'une goroutine?

sobes.tech IA

Réponse de l'IA

Non, le planificateur du système d'exploitation ne suspend pas obligatoirement l'exécution d'une goroutine en Go. Les goroutines sont des threads légers gérés par le runtime de Go, et non directement par le système d'exploitation.

Le runtime de Go planifie lui-même l'exécution des goroutines sur les threads système (planification M:N). Les goroutines peuvent être suspendues et reprises dans les cas suivants :

  • Lorsqu'une goroutine attend une entrée/sortie ou se bloque en synchronisation.
  • Lorsqu'une goroutine cède explicitement le contrôle (par exemple, appel à runtime.Gosched()).
  • Lorsqu'il est nécessaire d'équilibrer la charge entre les threads.

Ainsi, le passage d'une goroutine à une autre se fait de manière coopérative et sous le contrôle du runtime de Go, et non de manière forcée par le système d'exploitation.