WaitGroup 參考:使用指標和變數
Go 中的 WaitGroup 提供了用於協調 goroutine 的同步原語。它有三個主要功能:添加、完成和等待。在這裡,我們將研究它們的用法以及為什麼可以使用指標和變數來呼叫它們。
WaitGroup 方法
如上所述,所有 WaitGroup 函數都由指向 WaitGroup 的指針,由 *WaitGroup 接收器類型表示。這允許他們修改 WaitGroup 的內部狀態,追蹤 goroutine 完成並等待它們完成。
理解用法
有問題的程式碼片段顯示了兩個指標WaitGroup 函數的變數用法:
func main() { // Declared as a variable var wg sync.WaitGroup // Called with a pointer to the WaitGroup wg.Add(1) // Called with a variable (not a pointer) go worker(i, wg) }
將指標使用傳遞給Worker
將WaitGroup傳遞給 Worker Goroutine 時,使用 & 傳遞其地址至關重要。這是因為工作執行緒的 Done 函數對 WaitGroup 指標進行操作,直接將其作為變數傳遞會建立副本,從而導致意外行為。
結論
中總之,所有 WaitGroup 方法都設計為使用指標接收器來呼叫。程式碼片段中使用變數來簡化宣告和函數呼叫。然而,當將 WaitGroup 傳遞給 goroutine 時,必須傳遞其位址 (&) 以確保所有方法都在同一底層指標上操作。
以上是為什麼在 Go 的 WaitGroup 中使用指標和變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!