Lassen Sie uns einige Funktionen in diesem Artikel erkunden.
Golang Mutex
Die Synchronisation.Mutex liefert einen Mutex -Primitiv, der gegenseitige Ausschlüsse für gemeinsame Ressourcen ermöglicht, die Rassenbedingungen verhindern.
Beispiel Verwendung:
Paket MainMustex lesen/schreiben
Die Synchronisation.RWMutex bietet einen Leser/Schriftsteller -Mutex. Es bietet ähnliche Methoden als primitives Mutex, kann jedoch mithilfe von Rock- und Runlock -Methoden gleichzeitige Lesevorgänge ermöglichen:
var i = 10Das vorherige Beispiel kann es über eine Goroutine ermöglichen, den Code zu lesen. Im Gegensatz zu Synchronisation.Mutex, der genau einen Leser und einen Schriftsteller gleichzeitig ermöglicht.
Karteigruppen
Die Synchronisation.WaitGroup bietet einen Blockierungsmechanismus für Goroutinen an. Mit einer Karteigruppe können Sie die Ausführung einer Funktion blockieren, bis alle Goroutinen ausgeführt wurden.
Es funktioniert, indem es einen Zähler erstellt, der die Anzahl der Goroutinen zum Warten hält. Sobald eine Goroutine abgeschlossen ist, nimmt der Zähler um 1 ab. Sobald der Zähler 0 ist, blockiert die Karteigruppe die Ausführung.
Um dem Kartentisch einen Wert hinzuzufügen, können wir die Methode add () verwenden, die einen Ganzzahlwert erfordert.
Um eine Goroutine nach der Fertigstellung vom Zähler zu entfernen, verwenden wir die Done () -Methode. Zum Beispiel:
Paket MainIm vorherigen Beispiel erhöhen wir den Wert des Wartgruppenschalters durch die Verwendung der Funktion add ().
Sobald eine Goroutine abgeschlossen ist, verringern wir den Zähler mit der Done () -Methode durch 1. Der vorherige Code sollte die Ausgabe als:
Arbeiter: 4 LaufenEinmal
Die Synchronisation.Sobald Primitive sicherstellt, dass eine Funktion nur einmal ausgeführt wird. Ein Beispiel ist wie unten gezeigt:
var einmal synchronisieren.EinmalAbschluss
Dieser Leitfaden deckt einige grundlegende und grundlegende Primitive ab, die vom Go Sync -Paket bereitgestellt werden. Darüber hinaus wurden Synchronisationsprimitive wie Mutex, Karteigruppe, Pool, Lesen und Schreiben von Mutex- und Bedingungsvariablen diskutiert. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Tutorials finden Sie in anderen Linux -Hinweisartikeln.