threading goroutines in go: Ausführen einer konstanten Nummer gleichzeitig
Das Reich von GO -Parallelität bietet eine Fülle von Materialien, um auf die Fertigstellung einer angegebenen Anzahl von Goroutinen zu warten. Eine eigenständige Herausforderung stellt sich jedoch vor: Sicherstellung einer kontinuierlichen Ausführung einer vordefinierten Anzahl von Goroutinen, wobei einer als ein anderer abschließt. Ein naiver Ansatz könnte eine Vielzahl von parallelen Goroutinen initiieren, die gleichzeitig Hunderttausende von Aufgaben ausführen. Im Gegensatz dazu begrenzt das gewünschte Verhalten die gleichzeitig ausgeführten Goroutinen auf eine feste Anzahl (z. B. 20).
Dieses kontrollierte Parallelitätsmuster wird als "begrenzte Parallelität" bezeichnet. Durch die Implementierung dieses Musters in GO wird ein Kanal leerer Strukturen als Semaphor verwendet, wodurch die maximale Anzahl der gleichzeitigen Arbeiter -Goroutinen vorliegt. Hier ist eine Illustration:
Paket Haupt importieren "fmt" func main () { MaxGoroutines: = 10 Wache: = make (chan struct {}, maxgoroutines) für i: = 0; i
package main import "fmt" func main() { maxGoroutines := 10 guard := make(chan struct{}, maxGoroutines) for i := 0; iDer Artikel "Go -Parallelitätsmuster" untersucht dieses Konzept in seinem Abschnitt "begrenzter Parallelität" weiter, in denen ein tieferer Einblick in diese wichtige Concurrency -Technik bereitgestellt wird.
.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3