在Golang中,WaitGroup是一個并發原語,可以用于等待一組goroutine完成任務。下面是一些使用WaitGroup的技巧,以實現高效并發編程。
var wg sync.WaitGroup
wg.Add(2) // 設置需要等待的goroutine數量
go func() {
defer wg.Done() // 任務完成后通知WaitGroup
// 執行任務邏輯
}()
go func() {
defer wg.Done() // 任務完成后通知WaitGroup
// 執行任務邏輯
}()
wg.Wait() // 等待所有goroutine完成任務
通過使用WaitGroup,可以確保所有的goroutine都完成了任務,然后再繼續執行下面的邏輯。
另外,還有一些注意事項需要注意:
在啟動goroutine之前調用Add方法,否則可能會導致死鎖。
在goroutine內部使用defer語句調用Done方法,以確保任務完成后一定會調用Done方法。
不要在多個goroutine之間共享WaitGroup變量,應該將WaitGroup作為參數傳遞給每個goroutine。
總的來說,使用WaitGroup可以很方便地等待一組goroutine完成任務,從而實現高效的并發編程。