Implémentation du verrouillage dans le package Go~~sync
Les verrous mutex sont fournis dans le package de synchronisation en go ;
Dans l'article précédent du canal Go, nous avons utilisé la fonction time.Sleep() pour bloquer la Goroutine de la fonction principale jusqu'à ce que toutes les coroutines soient terminées. Cependant, ce n'est pas une bonne méthode car nous ne pouvons pas connaître avec précision les coroutines dans les applications réelles. cela prendra-t-il fin (une série de facteurs tels que les performances du serveur, les fluctuations du réseau et les E/S doivent être pris en compte ;
WaitGroup est fourni dans le package sysn pour réaliser la coordination entre les coroutines ;
Synchroniser le groupe d'attente
Synchronisation synchrone et synchronisation asynchrone ;
Le groupe d'attente de synchronisation WaitGroup est fourni en allant
voir le code source :
//等待一组Goroutine完成; 阻塞的直至所有的goroutine完成;
// A WaitGroup waits for a collection of goroutines to finish.
// The main goroutine calls Add to set the number of
// goroutines to wait for. Then each of the goroutines
// runs and calls Done when finished. At the same time,
// Wait can be used to block until all goroutines have finished.
//