Rumah >pembangunan bahagian belakang >Golang >Bolehkah Goroutine Berlari Secara Berterusan Mematikan Goroutine Lain dalam Go?
Penjadualan Koperasi Goroutine dan Potensi Kebuluran Pelaksanaan
Goroutine dijadualkan secara kooperatif, bermakna mereka secara sukarela menyerahkan pelaksanaan kepada goroutin lain. Walaupun pendekatan ini secara amnya memastikan keadilan, ia menimbulkan persoalan sama ada gorouti yang mengelak daripada menghasilkan berpotensi menyebabkan kebuluran gorouti lain.
Menurut catatan blog yang dirujuk (http://blog.nindalf.com/how-goroutines -work/), goroutin yang gelung berterusan tanpa menghasilkan memang boleh menyebabkan gorouti lain kelaparan pada benang yang sama. Goroutine pada utas tertentu dimultipleks, bermakna mereka tidak menyekat utas walaupun menghadapi operasi menyekat seperti input rangkaian, tidur atau operasi saluran.
Sebagai contoh, fungsi "jumlah" dalam kod yang diberikan berulang kali gelung beberapa kali rawak, menambah nombor pada jumlah dan mencetak hasil akhir. Jika berbilang goroutin tersebut dihasilkan menggunakan kata kunci "go" (seperti yang ditunjukkan dalam contoh), sama ada ia dilaksanakan satu demi satu bergantung pada faktor berikut:
Oleh itu, jika tiada hasil nyata atau panggilan fungsi yang mencetuskan penjadualan, goroutin yang melaksanakan gelung tak terhingga berpotensi menyebabkan kebuluran gorout lain pada urutan yang sama. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa masa jalan Go secara aktif cuba mengimbangi pelaksanaan goroutine dan mencegah kebuluran.
Atas ialah kandungan terperinci Bolehkah Goroutine Berlari Secara Berterusan Mematikan Goroutine Lain dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!