Sobes.tech
Junior — Middle

Peut-on fixer l'exécution d'une goroutine à un thread système spécifique?

sobes.tech IA

Réponse de l'IA

Dans Go (Golang), les goroutines ne sont pas attachées à des threads système spécifiques. Le planificateur de Go répartit lui-même les goroutines sur les threads du système d'exploitation pour une utilisation efficace des ressources.

Cependant, si vous avez besoin d'exécuter du code dans le contexte d'un thread spécifique (par exemple, pour interagir avec une bibliothèque C qui nécessite des appels depuis un seul thread), vous pouvez utiliser la fonction runtime.LockOSThread(). Elle attache la goroutine en cours à un thread système jusqu'à ce que runtime.UnlockOSThread() soit appelé.

Exemple :

import (
    "runtime"
)

func main() {
    runtime.LockOSThread()
    defer runtime.UnlockOSThread()
    // code qui doit s'exécuter dans un seul thread système
}

Mais dans la pratique courante, il n'est pas nécessaire ni recommandé d'attacher une goroutine à un thread, car cela réduit l'efficacité du planificateur.