Wie synchronisiere ich Goroutine mit WaitGroup in Go?

WBOY
Freigeben: 2024-06-01 21:18:00
Original
472 Leute haben es durchsucht

如何在 Go 中使用WaitGroup同步 Goroutine?

Wie verwende ich WaitGroup, um Goroutine in Go zu synchronisieren?

Was ist WaitGroup? WaitGroup

WaitGroup 是 Go 中的一个内置类型,用于协调并发操作,它可以用来确保一组 goroutine 在执行完毕之前不会继续执行。

如何使用 WaitGroup

使用 WaitGroup 的步骤如下:

  1. 创建 WaitGroup
var wg sync.WaitGroup
Nach dem Login kopieren
  1. 在 goroutine 中使用 Add()

当一个新的 goroutine 开始执行时,使用 WaitGroup.Add(1) 来增加计数器。

wg.Add(1)
go func() {
  // goroutine 代码
  wg.Done()
}()
Nach dem Login kopieren
  1. 在 goroutine 中使用 Done()

当 goroutine 执行完毕时,使用 WaitGroup.Done() 来减少计数器。

func() {
  // goroutine 代码
  wg.Done()
}
Nach dem Login kopieren
  1. 等待 Goroutine 完成

使用 WaitGroup.Wait() 来阻塞当前 goroutine,直到所有关联的 goroutine 完成执行。

wg.Wait()
Nach dem Login kopieren

实战案例

以下是一个示例,演示了如何使用 WaitGroup

🎜WaitGroup ist ein in Go integrierter Typ, der zum Koordinieren gleichzeitiger Vorgänge verwendet wird. Er kann verwendet werden, um sicherzustellen, dass eine Gruppe von Goroutinen die Ausführung nicht fortsetzt, bis sie abgeschlossen ist. 🎜🎜🎜So verwenden Sie WaitGroup🎜🎜🎜Die Schritte zur Verwendung von WaitGroup sind wie folgt: 🎜
  1. 🎜Erstellen Sie WaitGroup 🎜
package main

import (
  "fmt"
  "sync"
)

func main() {
  var wg sync.WaitGroup

  // 创建三个并发 goroutine
  for i := 0; i < 3; i++ {
    wg.Add(1)
    go func(i int) {
      defer wg.Done()
      fmt.Printf("Goroutine %d complete\n", i)
    }(i)
  }

  // 等待所有 goroutine 完成执行
  wg.Wait()

  // 输出:Goroutine 0 complete
  // 输出:Goroutine 1 complete
  // 输出:Goroutine 2 complete

  fmt.Println("All goroutines completed")
}
Nach dem Login kopieren
  1. 🎜Verwenden Sie Add() in Goroutine🎜
🎜Wenn eine neue Goroutine startet Verwenden Sie beim Ausführen WaitGroup.Add(1), um den Zähler zu erhöhen. 🎜rrreee
  1. 🎜Verwenden Sie Done() in Goroutine🎜
🎜Wenn die Goroutine die Ausführung abschließt, verwenden Sie WaitGroup Done (), um den Zähler zu dekrementieren. 🎜rrreee
  1. 🎜Warten Sie, bis Goroutine abgeschlossen ist🎜
🎜Verwenden Sie WaitGroup.Wait(), um die aktuelle Goroutine zu blockieren, bis alle verknüpft sind Goroutinen Vollständige Ausführung. 🎜rrreee🎜🎜Praktischer Fall🎜🎜🎜Das Folgende ist ein Beispiel, das zeigt, wie man mit WaitGroup drei gleichzeitige Goroutinen synchronisiert: 🎜rrreee

Das obige ist der detaillierte Inhalt vonWie synchronisiere ich Goroutine mit WaitGroup in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
go
Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!