Maison >développement back-end >Golang >Pourquoi utiliser des pointeurs et des variables avec WaitGroup de Go ?

Pourquoi utiliser des pointeurs et des variables avec WaitGroup de Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-01 00:43:10432parcourir

Why Use Pointers and Variables with Go's WaitGroup?

Référence WaitGroup : Utilisation de pointeurs et de variables

Le WaitGroup dans Go fournit des primitives de synchronisation pour coordonner les goroutines. Il a trois fonctions principales : Ajouter, Terminé et Attendre. Ici, nous examinerons leur utilisation et pourquoi elles peuvent être appelées à l'aide de pointeurs et de variables.

Méthodes WaitGroup

Comme mentionné, toutes les fonctions WaitGroup sont appelées par un pointeur vers un WaitGroup, désigné par le type de récepteur *WaitGroup. Cela leur permet de modifier l'état interne du WaitGroup, de suivre l'achèvement des goroutines et d'attendre qu'ils terminent.

Comprendre l'utilisation

L'extrait de code en question montre les deux pointeurs et utilisation des variables pour les fonctions WaitGroup :

func main() {

    // Declared as a variable
    var wg sync.WaitGroup

    // Called with a pointer to the WaitGroup
    wg.Add(1)

    // Called with a variable (not a pointer)
    go worker(i, wg)
}

Passer un pointeur vers le Worker

Lorsque vous transmettez le WaitGroup à la goroutine du travailleur, il est crucial de transmettre son adresse en utilisant &. En effet, la fonction Done du travailleur opère sur le pointeur WaitGroup et le transmettre directement en tant que variable créerait une copie, entraînant un comportement inattendu.

Conclusion

Dans En résumé, toutes les méthodes WaitGroup sont conçues pour être appelées avec un récepteur pointeur. Les variables sont utilisées dans l'extrait de code pour simplifier la déclaration et l'appel de fonction. Cependant, lors du passage du WaitGroup aux goroutines, il est essentiel de transmettre son adresse (&) pour s'assurer que toutes les méthodes fonctionnent sur le même pointeur sous-jacent.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn