WaitGroup 在 Go 并发中未完成
提供的代码尝试从 URL 列表中同时下载和保存多个文件。然而,主 goroutine 永远不会终止,因为sync.WaitGroup永远不会完成。
已识别的两个问题:
优化代码:
func downloadFromURL(url string, wg *sync.WaitGroup) error { defer wg.Done() // Moved to the beginning of the function ... // Other code } func main() { ... for _, url := range links { if isExcelDocument(url) { wg.Add(1) go downloadFromURL(url, &wg) // Pass pointer to WaitGroup } else { fmt.Printf("Skipping: %v \n", url) } } ... }
通过解决这些问题,WaitGroup 将准确跟踪正在运行的 goroutine 数量,一旦所有下载完成,主 goroutine 将终止完成。
以上是为什么我的Go WaitGroup并发下载文件时没有完成?的详细内容。更多信息请关注PHP中文网其他相关文章!