Methoden zur Steuerung der Anzahl der Parallelität in der Go-Sprache

Freigeben: 2020-06-17 17:48:47
nach vorne
3350 Leute haben es durchsucht

Methoden zur Steuerung der Anzahl der Parallelität in der Go-Sprache

Da die Go-Sprache Parallelität unterstützt, werden in Interviews häufig Fragen zur Parallelität gestellt. Wie lässt sich beispielsweise die Anzahl der Go-Parallelität steuern? Das Folgende sind zwei Beispiele, die ich persönlich zusammengestellt habe:

func waitGroup() {
    count := 10
    wg := sync.WaitGroup{}

    for i := 0; i < count; i++ {
        wg.Add(1)
        go func(j int) {
            fmt.Print(j)
            wg.Done() // 也可使用 wg.Add(-1)
        }(i)
    }

    wg.Wait()
}
Nach dem Login kopieren

Die oben genannte Hauptverwendung ist die WaitGroup unter dem Synchronisierungspaket in go. Dies ist auch eine gängige Implementierungsmethode bei der Arbeit. Der entscheidende Punkt ist, die Add-Methode zu verstehen . Position, die Wait-Methode soll auf die Ausführung aller Coroutinen warten

func channel() {
    count := 10 // 最大支持并发
    sum := 100 // 任务总数

    c := make(chan struct{}, count) // 控制任务并发的chan
    sc := make(chan struct{}, sum) // 控制任务总数的chan
    defer close(c)
    defer close(sc)

    for i:=0; i<sum;i++{
        c <- struct{}{} // 作用类似于waitgroup.Add(1)
        go func(j int) {
            fmt.Println(j)
            <- c // 执行完毕,释放资源
            sc <- struct {}{} // 记录到执行总数里
        }(i)
    }

    for i:=sum; i>0;i-- {
        <- sc
    }
}
Nach dem Login kopieren

Das obige Beispiel verwendet den Kanal in go, wobei die Kanalblockierungsfunktion und der gepufferte Kanal verwendet werden, um die Anzahl der Parallelitäten zu steuern, wobei sc Dies ist Der Kanal kann im Beispiel nur entfernt werden, um zu verhindern, dass nach dem Beenden des Hauptprogramms nicht alle Ausgaben ausgegeben werden. Im Normalbetrieb ist das Programm blockiert und kann daher entfernt werden.

Weitere Informationen zu diesem Thema finden Sie in der Spalte mit den Go-Language-Tutorials

Das obige ist der detaillierte Inhalt vonMethoden zur Steuerung der Anzahl der Parallelität in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage