En golang, asynchrone signifie que l'exécution d'un processus asynchrone ne suit pas l'ordre du code. L'exécution d'un processus asynchrone n'aura plus de relation séquentielle avec la séquence d'origine en asynchrone, lorsqu'un appel de processus asynchrone est effectué ; émis, l'appelant n'obtient pas le résultat. Avant cela, vous pouvez continuer à effectuer les opérations suivantes. Golang asynchrone est principalement implémenté par coroutine (goroutine) ; goroutine est utilisé pour appeler des fonctions lorsqu'une fonction est appelée par le mot-clé go, go créera un élément de type coroutine pour exécuter la fonction, afin qu'elle puisse facilement atteindre la concurrence.
L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.
Asynchrone (async) est un concept opposé à synchrone (Synchronous, sync). Dans la programmation monothread traditionnelle que nous avons étudiée, l'exécution du programme est synchrone (synchrone ne signifie pas que toutes les étapes s'exécutent en même temps, mais signifie que les étapes sont exécutées séquentiellement dans une séquence de flux de contrôle). Le concept d'asynchrone est un concept qui ne garantit pas la synchronisation, c'est-à-dire que l'exécution d'un processus asynchrone n'aura plus de relation séquentielle avec la séquence d'origine.
Une compréhension simple est la suivante : la synchronisation est exécutée dans l'ordre de votre code, l'exécution asynchrone n'est pas dans l'ordre du code et l'exécution asynchrone est plus efficace.
Une autre explication est :
Donnez-vous deux conteneurs, l'un est appelé synchrone et l'autre est appelé asynchrone. Divisez le code à exécuter respectivement en synchrone et asynchrone et attendez que l'asynchrone soit compilé, et attendez l'exécution synchrone. Après avoir terminé, exécutez le code à l'intérieur de manière asynchrone.
L'asynchrone de Go est principalement implémenté par coroutine (goroutine). Par rapport aux threads, les coroutines occupent moins de mémoire et sont plus légères, ce qui constitue également l'avantage de Go en termes de performances.
Le langage Go est un langage de programmation simultané. Il existe un mot-clé go (goroutine) très important dans Go. Généralement, nous pouvons l'utiliser pour effectuer certaines tâches asynchrones et simultanées.
goroutine est utilisé pour appeler des fonctions. Lorsqu'une fonction est appelée par le mot-clé go, go créera un élément semblable à une coroutine pour exécuter la fonction, afin que la concurrence puisse être facilement obtenue.
Exemple :
package main import ( "fmt" ) func main() { go work1() go work2() fmt.Println("[全部完成]") } func work1(){ fmt.Println("work1") } func work2(){ fmt.Println("work2") }
Résultat :
[全部完成]
Bien sûr, c'est un exemple inapproprié, mais cela prouve également une exécution asynchrone. Après avoir appelé work1 et work2, l'exécution continue sans attendre les résultats de sortie.
Si vous souhaitez attendre la fin de l'exécution asynchrone avant d'exécuter la sortie finale, vous devez rejoindre le WaitGroup
Exemple correct :
package main import ( "fmt" "sync" ) var waitGroup sync.WaitGroup func main() { waitGroup.Add(2) go work1() go work2() waitGroup.Wait() fmt.Println("[全部完成]") } func work1(){ fmt.Println("work1") waitGroup.Done() } func work2(){ fmt.Println("work2") waitGroup.Done() }
Résultat :
work2 work1 [全部完成]
[Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation ]
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!