首頁 >後端開發 >Golang >為什麼對 WaitGroup.Done 使用指針,而不對 WaitGroup.Add 和 WaitGroup.Wait 使用指針?

為什麼對 WaitGroup.Done 使用指針,而不對 WaitGroup.Add 和 WaitGroup.Wait 使用指針?

Susan Sarandon
Susan Sarandon原創
2024-11-20 00:28:02795瀏覽

Why Use a Pointer for WaitGroup.Done but Not for WaitGroup.Add and WaitGroup.Wait?

WaitGroups 參考中的指標和變數

在sync 套件中,函數Add、Done 和Wait 都是透過指向WaitGroup 的指標來呼叫的:

  • Add 將等待計數增加給定的增量。
  • 完成遞減等待計數。
  • Wait 阻塞,直到等待計數為零。

在提供的程式碼片段中,使用指標變數呼叫 Done 函數,而 Add 和 Wait使用變數(而不是指標)呼叫函數。

但是,所有三個函數都在同一個WaitGroup 上呼叫value.

  • wg 變數被宣告為sync.WaitGroup 的值,但Add解引用運算子在wg (wg) 的位址上呼叫、Done 和Wait方法()。
  • 這表示所有三個函數都在同一個底層 WaitGroup 值上進行操作。
  • 唯一的差異是在 wg 的位址上呼叫 Done 以確保正在修改正確的 WaitGroup 值。

以上是為什麼對 WaitGroup.Done 使用指針,而不對 WaitGroup.Add 和 WaitGroup.Wait 使用指針?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn