La présentation Google I/O 2012 "Go Concurrency Patterns" pose la question de savoir si les goroutines, des threads légers dans le langage Go , sont implémentés sous forme de coroutines.
Définition et définition de la coroutine Comparaison
Une coroutine implique généralement des mécanismes explicites de transfert de contrôle entre différentes coroutines. Les programmeurs peuvent déterminer par programme quand une coroutine doit suspendre l'exécution et passer le contrôle à une autre.
Implémentation de Goroutine
Les goroutines, en revanche, cèdent implicitement le contrôle à des moments précis mais finalement indéterminés. points. Par exemple, les goroutines sont suspendues avant d'exécuter des opérations d'E/S ou d'envoyer des données via des canaux. Cette approche permet aux programmeurs d'écrire des processus séquentiels et légers qui partagent efficacement l'état.
Détails d'implémentation
L'implémentation des goroutines s'apparente à la bibliothèque "State Threads", fonctionnant à un niveau inférieur. Go interagit directement avec le noyau du système d'exploitation sans s'appuyer sur des bibliothèques externes.
Mise à jour : package coroutine proposé
En 2023, Russ Cox a proposé un package coroutine standard pour Go, offrant un cadre pour le transfert de contrôle explicite et la planification coopérative.
Supplémentaire Notes
Avant Go 1.14, les goroutines étaient planifiées de manière non préventive, où le noyau pouvait suspendre les threads à tout moment. Depuis Go 1.14, les goroutines ont été planifiées (presque) de manière préventive, permettant un contrôle plus granulaire de leur exécution.
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!