Go Rutin Menyekat Orang Lain dalam Go
Dalam Go, isu biasa timbul apabila seseorang pergi rutin menyekat pelaksanaan rutin lain. Soalan ini meneroka sebab rutin pergi dengan gelung tak terhingga mungkin menghalang rutin lain daripada menghantar data ke saluran tamat masa.
Masalahnya terletak pada penggunaan penjadualan koperasi dalam Go. Dalam sistem ini, goroutine mesti menghasilkan pelaksanaan kembali kepada penjadual untuk membolehkan rutin lain dijalankan. Terdapat beberapa situasi di mana goroutine menghasilkan, termasuk:
Dalam kod yang diberikan, rutin pergi dengan gelung tak terhingga sentiasa berjalan tanpa mengalah, sekali gus menghalang rutin lain daripada menulis ke saluran tamat masa. Gelung tak terhingga ini menyekat keseluruhan program dengan berkesan.
Penyelesaian kepada isu ini adalah dengan menggunakan penjadualan awalan, yang akan memaksa goroutin untuk menghasilkan secara berkala. Walau bagaimanapun, Go pada masa ini menggunakan penjadualan koperasi.
Satu penyelesaian yang berpotensi ialah menambah bilangan pemproses melalui GOMAXPROCS. Ini membolehkan berbilang gorouti berjalan serentak, tetapi penting untuk diperhatikan bahawa pemungut sampah masih boleh menghentikan dunia dan menghentikan semua gorouti jika rutin terikat CPU tidak membuahkan hasil.
Atas ialah kandungan terperinci Mengapa Gelung Infinite dalam One Go Rutin Menyekat Orang Lain daripada Menghantar Data ke Saluran Tamat Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!