**Mengapa Program Golang Saya Menggunakan WaitGroup dan Saluran Berjalan Tanpa Had?**

Mary-Kate Olsen
Lepaskan: 2024-10-26 09:46:29
asal
767 orang telah melayarinya

**Why Does My Golang Program Using WaitGroup and Channels Run Indefinitely?**

WaitGroup dan Penggunaan Saluran dalam Program Golang

Program Golang ini menggunakan sync.WaitGroup dan saluran untuk mencapai pelaksanaan goroutine dan pengumpulan data yang cekap. Walau bagaimanapun, ia menghadapi isu di mana program tidak keluar selepas menyelesaikan tugasnya. Artikel ini menyelidiki masalah dan menyediakan penyelesaian.

Program ini melibatkan mendapatkan semula sebut harga saham untuk senarai simbol dan kemudian menyimpan hasilnya ke fail. Ia menggunakan gabungan goroutine dan saluran untuk melaksanakan proses pengambilan secara serentak, dengan WaitGroup untuk menjejaki penyempurnaan semua tugasan. Walau bagaimanapun, program jatuh ke dalam gelung tak terhingga kerana saluran fetchedSymbols kekal terbuka selama-lamanya.

Untuk menyelesaikan isu ini, atur cara perlu menutup saluran fetchedSymbols selepas semua goroutine menyelesaikan tugas mereka. WaitGroup, yang sudah menjejaki penyiapan goroutine, boleh digunakan untuk tujuan ini. Dengan menambahkan pembungkus go func() yang menutup saluran apabila WaitGroup mencapai sifar, isu itu diselesaikan.

Bahagian kod yang diubah suai adalah seperti berikut:

<code class="go">...
go func() {
    wg.Wait()
    close(fetchedSymbols)
}()

for response := range fetchedSymbols {
    fmt.Println("fetched " + response)
}

...</code>
Salin selepas log masuk

Go yang ditambahkan func() rutin menunggu WaitGroup mencapai sifar, menunjukkan bahawa semua goroutine telah menyelesaikan tugas mereka. Ia kemudian menutup saluran fetchedSymbols, membenarkan gelung julat dalam utama keluar seperti yang dijangkakan dan membenarkan atur cara untuk menyelesaikan pelaksanaan.

Program yang dipertingkatkan ini menggunakan WaitGroup dan saluran secara berkesan untuk pelaksanaan goroutine serentak dan pengambilan data, dan ia keluar. dengan anggun selepas menyelesaikan semua tugasan yang diperlukan.

Atas ialah kandungan terperinci **Mengapa Program Golang Saya Menggunakan WaitGroup dan Saluran Berjalan Tanpa Had?**. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!