首頁 > 後端開發 > Golang > 為什麼我的Go WaitGroup並發下載檔時沒有完成?

為什麼我的Go WaitGroup並發下載檔時沒有完成?

Barbara Streisand
發布: 2024-11-28 07:35:12
原創
748 人瀏覽過

Why Doesn't My Go WaitGroup Complete When Downloading Files Concurrently?

WaitGroup 在 Go 並發中未完成

提供的程式碼嘗試從 URL 清單中同時下載和儲存多個檔案。然而,主 goroutine 永遠不會終止,因為sync.WaitGroup永遠不會完成。

已識別的兩個問題:

  1. 同步問題:
    在downloadFromURL() 中,應該呼叫wg. Done() 呼叫作為第一個語句,而不是在函數的末尾。這確保即使函數提前返回,WaitGroup 也會正確遞減。
  2. 並發指標:
    downloadFromURL() 函數應該接收一個指向sync.WaitGroup 的指標來操作共享正確地反對。否則,按值傳遞 WaitGroup 會建立一個副本,對副本所做的變更將不會反映在主 Goroutine 中。

最佳化程式碼:

透過解決這些問題,WaitGroup 將準確追蹤正在運行的goroutine 數量,一旦所有下載完成,主goroutine 將終止完成。

以上是為什麼我的Go WaitGroup並發下載檔時沒有完成?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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