Rumah >pembangunan bahagian belakang >Golang >Mengapa Klausa Lalai dalam Pernyataan `select` Go Menyekat Pelaksanaan Goroutine dalam Fungsi Crawl?
Goroutine dengan Pelaksanaan Penyekatan Pilihan
Apabila menggunakan corak konkurensi Go, Goroutines boleh digunakan untuk melaksanakan tugas tak segerak. Walau bagaimanapun, kadangkala, Goroutine ini mungkin memasuki gelung tak terhingga, menghalang program daripada berkembang.
Kajian Kes: Fungsi Merangkak
Dalam latihan Go Tour #71, a fungsi merangkak menggunakan Goroutines dan pernyataan pilih untuk merangkak satu set URL. Walau bagaimanapun, jika klausa lalai disertakan dalam pernyataan pilih, Goroutine akan disekat dan pelaksanaan terhenti.
Memahami Pilih
Pernyataan pilih ialah binaan asas dalam Pergi untuk menguruskan concurrency. Ia membolehkan goroutine menunggu data atau acara pada berbilang saluran. Tanpa klausa lalai, pilih akan menyekat selama-lamanya sehingga mesej tiba pada salah satu saluran.
Impak Klausa Lalai
Menambah klausa lalai untuk memilih mengubah tingkah lakunya . Daripada menyekat, pernyataan lalai akan dilaksanakan serta-merta apabila tiada data tersedia pada mana-mana saluran. Dalam fungsi rangkak, tingkah laku ini mencipta gelung tak terhingga.
Penyelesaian
Untuk menghalang gelung tak terhingga, seseorang boleh mengalih keluar klausa lalai daripada pernyataan pilih. Sebagai alternatif, seseorang boleh melaksanakan penyataan pilih tanpa sekatan yang menyemak data yang tersedia secara berkala pada saluran.
Gelagat Penjadual
Gorutin dijadualkan secara kerjasama, bermakna mereka mesti secara sukarela menghasilkan kawalan kepada penjadual untuk membolehkan Goroutines lain dijalankan. Dalam kes ini, gelung tak terhingga dalam pernyataan pilih menghalang penjadual daripada menggunakan Goroutine lain, membawa kepada kelakuan menyekat yang jelas.
Pemerhatian Tambahan
Atas ialah kandungan terperinci Mengapa Klausa Lalai dalam Pernyataan `select` Go Menyekat Pelaksanaan Goroutine dalam Fungsi Crawl?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!