如何在 Go 中使用 WaitGroup 同步 Goroutine?
什麼是 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
同步三個並發 goroutine:
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") }
以上是如何在 Go 中使用WaitGroup同步 Goroutine?的詳細內容。更多資訊請關注PHP中文網其他相關文章!