La définition la plus simple à comprendre de la part de l'auteur est celle de plusieurs processus qui s'exécutent simultanément, chacun faisant partie d'une série d'étapes de processus liées les unes aux autres.
L'analogie est la suivante : imaginez un flux de processus pour les sauvegardes automatiques de bases de données de routine, où de nombreuses bases de données doivent être sauvegardées. Pour la sauvegarde elle-même, nous utilisons le programme go, pas un script shell. Peut-être qu'en résumé, une série d'étapes du processus qui seront réalisées sont les suivantes.
A. Effectuez une opération de dump sur la base de données, la sortie se présente sous la forme de nombreux fichiers enregistrés dans un dossier.
B. Les fichiers dump sont ensuite archivés au format .zip ou .tar .gz (par exemple)
C. Le fichier d'archive est envoyé à un serveur de sauvegarde par exemple AWS S3.
Si vous prêtez attention au cas ci-dessus, il pourrait être préférable en termes de performances que le processus de sauvegarde de plusieurs bases de données soit effectué en parallèle. et sur cela l'auteur est d'accord.
Et ce serait encore mieux si les processus de chaque processus de sauvegarde de base de données, A, B et C, étaient exécutés simultanément, en faisant des trois processus (A, B, C) un processus simultané, alors les E/S seraient être plus efficace. Plus tard, entre les processus A, B et C, l'exécution restera séquentielle (car elle doit s'exécuter de manière séquentielle. Il n'est pas permis si, par exemple, B est exécuté en premier, puis A) ; Cependant, la goroutine qui sera chargée de l’exécution du processus A est complète. nous pouvons continuer avec l'exécution B (qui est la prochaine étape du processus A) plus l'exécution d'autres processus (une autre base de données) ; en parallèle. Ainsi, la goroutine qui gère A ne devient pas inactive.
Veuillez prêter attention à la visualisation suivante. La colonne est une représentation de goroutines qui s'exécutent simultanément. Mais comme les trois goroutines sont une série de processus, les processus sont toujours séquentiels, tandis que les lignes représentent une séquence.
En Go, généralement le processus sous forme de goroutine qui est exécuté est concurrent, mais en flow il doit être séquentiel, on l'appelle un pipeline, donc pour le moment supposons simplement que le pipeline A est un goroutine pour le processus A, le pipeline B est la goroutine B et ainsi de suite.
Pour faciliter la compréhension du tableau, veuillez suivre l'explication séquentielle :
Dans cet exemple, nous supposons que le pipeline A n'a qu'un seul goroutine, le pipeline B a également un goroutine, tout comme le pipeline C. Mais en réalité, dans la mise en œuvre dans le monde réel, il peut y avoir plusieurs goroutines pour chaque pipeline (plusieurs goroutines pour le pipeline A, beaucoup de goroutines pour le pipeline B, de nombreuses goroutines pour le pipeline C).
J'espère que mes écrits pourront expliquer. Même si ce n'est pas clair, Internet est ouvert avec les sources LAN.
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!