Heim >Backend-Entwicklung >Golang >Warum wird meine Go WaitGroup beim gleichzeitigen Herunterladen von Dateien nicht abgeschlossen?
WaitGroup wird in Go-Parallelität nicht abgeschlossen
Der bereitgestellte Code versucht, mehrere Dateien gleichzeitig aus einer Liste von URLs herunterzuladen und zu speichern. Die Haupt-Goroutine wird jedoch nie beendet, da die sync.WaitGroup nie abgeschlossen wird.
Zwei Probleme identifiziert:
Optimierter Code:
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) } } ... }
Durch die Behebung dieser Probleme kann die WaitGroup die Anzahl der ausgeführten Goroutinen genau verfolgen und die Haupt-Goroutine wird beendet, sobald alle Downloads abgeschlossen sind.
Das obige ist der detaillierte Inhalt vonWarum wird meine Go WaitGroup beim gleichzeitigen Herunterladen von Dateien nicht abgeschlossen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!