首頁 > 後端開發 > Golang > 為什麼在 Go 的 WaitGroup 中使用指標和變數?

為什麼在 Go 的 WaitGroup 中使用指標和變數?

Linda Hamilton
發布: 2024-12-01 00:43:10
原創
435 人瀏覽過

Why Use Pointers and Variables with Go's WaitGroup?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板