Explorons certaines fonctionnalités fournies dans cet article.
Golang Mutex
La synchronisation.Mutex fournit une primitive mutex, ce qui permet des exclusions mutuelles pour les ressources partagées empêchant les conditions de course.
Exemple d'utilisation:
package principalLire / écrire Mutex
La synchronisation.RWMutex fournit un lecteur / écrivain Mutex. Il offre des méthodes similaires en tant que mutex primitif mais peut permettre des lectures simultanées en utilisant des méthodes RLOCK et Runlock:
var i = 10L'exemple précédent peut permettre à un Goroutine de lire le code. Contrairement à la synchronisation.Mutex, qui permet exactement un lecteur et un écrivain à la fois.
Groupes d'attente
La synchronisation.Waitgroup est utilisé pour offrir un mécanisme de blocage pour les goroutines. À l'aide d'un groupe d'attente, vous pouvez bloquer l'exécution d'une fonction jusqu'à ce que tous les Goroutines aient fini l'exécution.
Il fonctionne en créant un compteur qui contient le nombre de Goroutines à attendre. Une fois une goroutine terminée, le compteur diminue de 1. Une fois que le compteur est 0, le groupe d'attente débloque l'exécution.
Pour ajouter une valeur au compteur de groupe d'attente, nous pouvons utiliser la méthode Add (), qui prend une valeur entière.
Pour éliminer un goroutine du comptoir après l'achèvement, nous utilisons la méthode Done (). Par exemple:
package principalDans l'exemple précédent, nous incrémentons la valeur du compteur de groupe d'attente par 1 via l'utilisation de la fonction add ().
Une fois une goroutine terminée, nous décrémentons le compteur par 1 en utilisant la méthode Done (). Le code précédent doit renvoyer la sortie comme suit:
Travailleur: 4 RunningUne fois
La synchronisation.Une fois primitif garantit qu'une fonction ne fonctionne qu'une seule fois. Un exemple est comme indiqué ci-dessous:
var une fois la synchronisation.Une foisConclusion
Ce guide couvre certaines primitives de base et fondamentales fournies par le package Go Sync. De plus, les primitives de synchronisation, telles que Mutex, Waitgroup, Pool, Read and Write Mutex et les variables de condition, ont été discutées. Nous espérons que vous avez trouvé cet article utile. Découvrez d'autres articles sur les conseils pour plus de conseils et de tutoriels.