Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan teks yang anda sediakan: * **Pergi WaitGroup dan Saluran: Mengapa Program Saya Tidak Keluar?** * **Terperangkap dalam Gelung: Cara Menutup Saluran dengan Betul dalam Go dengan WaitGro

Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan teks yang anda sediakan: * **Pergi WaitGroup dan Saluran: Mengapa Program Saya Tidak Keluar?** * **Terperangkap dalam Gelung: Cara Menutup Saluran dengan Betul dalam Go dengan WaitGro

DDD
DDDasal
2024-10-26 11:33:03226semak imbas

Here are a few question-based titles that fit your provided text:

* **Go WaitGroup and Channels: Why Does My Program Not Exit?**
* **Stuck in a Loop: How to Properly Close Channels in Go with WaitGroup**
* **Channel Not Closed, Program Stalled: Debugging

Saluran Tidak Ditutup, Program Terhenti

Dalam aplikasi Go anda menggunakan penyegerakan.WaitGroup dan saluran, anda telah menghadapi isu di mana program tidak keluar walaupun selepas menunggu semua goroutine selesai.

Butiran Masalah

Kod anda menggunakan WaitGroup untuk menjejaki penyiapan goroutine dan saluran untuk menghantar nama simbol yang diambil . Walau bagaimanapun, saluran fetchedSymbols kekal terbuka selama-lamanya, menghalang gelung dalam utama daripada ditamatkan.

Penyelesaian

  1. Penutupan Saluran Isyarat dengan WaitGroup: Gunakan WaitGroup yang digunakan untuk menjejaki penyiapan goroutine untuk memberi isyarat bila hendak menutup saluran. Memperkenalkan goroutine yang menunggu WaitGroup mencapai sifar dan kemudian menutup saluran.
<code class="go">go func() {
    wg.Wait()
    close(fetchedSymbols)
}()</code>
  1. Alih Keluar Penyekatan yang Tidak Diperlukan: Gelung julat atas fetchedSymbols sudah menyekat sehingga saluran ditutup, menjadikan mana-mana saluran tambahan atau WaitGroup berlebihan. Oleh itu, alih keluar kod berikut:
<code class="go">for {
    select {
    case symbol := <-fetchedSymbols:
        fmt.Println("fetched", symbol)
    }
}</code>
  1. Tutup penangguhan: Ingat untuk menutup penangguhan dalam fetchSymbol goroutine untuk memastikan permintaan dan penulisan fail dimuktamadkan sebelum keluar .

Dengan pengubahsuaian ini, kod anda kini akan keluar dengan betul selepas semua petikan simbol diambil dan disimpan.

Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan teks yang anda sediakan: * **Pergi WaitGroup dan Saluran: Mengapa Program Saya Tidak Keluar?** * **Terperangkap dalam Gelung: Cara Menutup Saluran dengan Betul dalam Go dengan WaitGro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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