Rumah >pembangunan bahagian belakang >Golang >Mengapa My Go WaitGroup Tidak Selesai Apabila Memuat Turun Fail Secara serentak?
WaitGroup Tidak Selesai dalam Go Concurrency
Kod yang disediakan cuba memuat turun dan menyimpan berbilang fail secara serentak daripada senarai URL. Walau bagaimanapun, goroutine utama tidak pernah ditamatkan kerana penyegerakan.WaitGroup tidak pernah selesai.
Dua Isu Dikenalpasti:
Kod Dioptimumkan:
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) } } ... }
Dengan menangani isu ini, WaitGroup akan menjejaki bilangan goroutine yang sedang berjalan dengan tepat dan goroutine akan ditamatkan setelah semua muat turun selesai.
Atas ialah kandungan terperinci Mengapa My Go WaitGroup Tidak Selesai Apabila Memuat Turun Fail Secara serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!