golang a des processus. Un processus est un processus d'exécution d'un programme dans le système d'exploitation et constitue l'unité de base pour l'allocation et la planification des ressources par le système ; un processus est un concept dynamique et constitue l'unité de base pour l'allocation et la gestion des ressources pendant l'exécution d'un programme. programme. Chaque processus possède son propre espace d’adressage. Le langage go prend en charge plusieurs processus et son modèle de thread est le modèle MPG. En général, il existe une correspondance plusieurs-à-plusieurs entre les processus Go et les threads du noyau.
L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.
Un processus est un processus d'exécution d'un programme dans le système d'exploitation. C'est l'unité de base pour l'allocation et la planification des ressources par le système. un concept dynamique est l'unité de base pour l'allocation et la gestion des ressources pendant l'exécution du programme. Chaque processus possède son propre espace d'adressage. Un processus a au moins 5 états de base : état initial, état d’exécution, état d’attente, état prêt et état de fin.
En termes simples : Un processus est un programme en cours d’exécution.
Un thread est une instance d'exécution d'un processus et la plus petite unité d'exécution d'un programme. C'est une unité de base qui est plus petite qu'un processus et peut s'exécuter indépendamment.
En termes simples : Un processus peut créer plusieurs threads, et plusieurs threads dans le même processus peuvent s'exécuter simultanément Pour qu'un programme s'exécute, il doit y avoir au moins un processus.
Plusieurs threads se disputent une position en même temps, et seuls ceux qui sont en compétition ne peuvent être exécutés qu'un seul thread. s'exécute à chaque période de temps.
Plusieurs threads peuvent être exécutés en même temps. Dans chaque période, plusieurs threads peuvent être exécutés en même temps.
Les programmes multithread sont appelés concurrence lorsqu'ils sont exécutés sur un processeur monocœur et parallèles lorsqu'ils sont exécutés sur un processeur multicœur. Si le nombre de threads est supérieur au nombre de cœurs de processeur, un programme multithread sera à la fois simultané et parallèle sur plusieurs processeurs.
peut être compris comme un thread ou un processus. Plusieurs coroutines peuvent être activées sur le thread principal d'un programme Golang. Plusieurs coroutines dans Golang peuvent réaliser la concurrence ou le parallélisme.
peuvent être comprises comme des threads au niveau de l'utilisateur, qui sont transparents pour le noyau, c'est-à-dire que le système ne connaît pas l'existence des coroutines et est entièrement planifié par le propre programme de l'utilisateur. Une caractéristique majeure de Golang est qu'il prend en charge les coroutines de manière native du point de vue du langage. Vous pouvez créer une coroutine en ajoutant le mot-clé go devant une fonction ou une méthode. On peut dire que la coroutine dans golang est goroutine.
Le multi-coroutine en Golang est quelque peu similaire au multi-threading dans d'autres langages.
Chaque goroutine (coroutine) dans Golang occupe beaucoup moins de mémoire par défaut que les threads Java et C. Les threads du système d'exploitation (threads du système d'exploitation) ont généralement une mémoire de pile fixe (généralement environ 2 Mo). Une goroutine (coroutine) occupe une très petite mémoire, seulement environ 2 Ko. La surcharge de planification de la commutation goroutine multi-goroutine est bien inférieure à celle des threads. C'est l'une des raisons pour lesquelles de plus en plus de grandes entreprises utilisent Golang.
package main import "fmt" func test() { for i := 0; i <h3 id="2.%20%E5%8A%A0%E5%85%A5go"><strong>2 Lorsque le thread principal s'exécute rapidement. </strong></h3> <pre class="brush:php;toolbar:false">package main import "fmt" func test() { for i := 0; i <h3 id="3.%20%E5%8A%A0%E5%85%A5%E6%97%B6%E9%97%B4"><strong>5. sync.WaitGroup résout le problème de ne pas attendre</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) // 加入时间 func test1() { for i := 0; i <h3 id="4.%20%E4%B8%BB%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%E5%BF%AB%E7%9A%84%E6%83%85%E5%86%B5"><strong>6 Exécution simultanée de plusieurs coroutines en parallèle</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) func test1() { for i := 0; i <h3 id="5.%20sync.WaitGroup%E8%A7%A3%E5%86%B3%E4%B8%8D%E7%AD%89%E5%BE%85"><strong>5. )</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" "sync" ) var wg sync.WiatGroup func test2() { for i := 0; i <h3 id="6.%20%E5%A4%9A%E5%8D%8F%E7%A8%8B%E5%B9%B6%E5%8F%91%E5%B9%B6%E8%A1%8C%E6%89%A7%E8%A1%8C">Plus Pour plus de connaissances sur la programmation, veuillez visiter : <strong>Vidéos de programmation</strong> ! ! </h3>
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!