Heim > Artikel > Backend-Entwicklung > Wie synchronisiere ich Goroutine mit WaitGroup in Go?
Wie verwende ich WaitGroup, um Goroutine in Go zu synchronisieren?
Was ist WaitGroup
? WaitGroup
?
WaitGroup
是 Go 中的一个内置类型,用于协调并发操作,它可以用来确保一组 goroutine 在执行完毕之前不会继续执行。
如何使用 WaitGroup
使用 WaitGroup
的步骤如下:
WaitGroup
var wg sync.WaitGroup
Add()
当一个新的 goroutine 开始执行时,使用 WaitGroup.Add(1)
来增加计数器。
wg.Add(1) go func() { // goroutine 代码 wg.Done() }()
Done()
当 goroutine 执行完毕时,使用 WaitGroup.Done()
来减少计数器。
func() { // goroutine 代码 wg.Done() }
使用 WaitGroup.Wait()
来阻塞当前 goroutine,直到所有关联的 goroutine 完成执行。
wg.Wait()
实战案例
以下是一个示例,演示了如何使用 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: 🎜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") }
Add()
in Goroutine🎜WaitGroup.Add(1)
, um den Zähler zu erhöhen. 🎜rrreeeDone()
in Goroutine🎜WaitGroup Done ()
, um den Zähler zu dekrementieren. 🎜rrreeeWaitGroup.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: 🎜rrreeeDas 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!