Mengelakkan Penamatan Program Pramatang dalam Proses Go Long Running
Dalam Go, seseorang boleh menghadapi situasi di mana program berjalan lama, dengan logiknya dilaksanakan dalam goroutin serentak, ditamatkan lebih awal apabila fungsi utama keluar. Untuk mengelakkan tingkah laku yang tidak diingini ini, pembangun mencari amalan terbaik untuk mengekalkan fungsi utama daripada ditamatkan, dengan itu memastikan operasi berterusan program.
Satu kaedah yang biasa digunakan ialah penciptaan saluran dan menangguhkan keluar dari fungsi utama dengan menerima pada saluran itu. Walau bagaimanapun, pendekatan ini memberikan cabaran jika semua goroutine menjadi tidak aktif.
Sebaliknya, pendekatan yang disyorkan adalah untuk melaksanakan mekanisme penyekatan tidak tentu dalam fungsi utama. Dengan menggunakan penyataan {} pilih, fungsi utama menyekat selama-lamanya, menghalang penamatan program.
Pertimbangkan demonstrasi berikut:
package main import ( "fmt" "time" ) func main() { go forever() select {} // block forever } func forever() { for { fmt.Printf("%v+\n", time.Now()) time.Sleep(time.Second) } }
Dalam contoh yang dipertingkatkan ini, fungsi utama menggunakan pilihan { } pernyataan disekat selama-lamanya, membenarkan goroutine seperti forever() meneruskan operasinya tanpa risiko penamatan program pramatang.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Penamatan Pramatang Program Jangka Panjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!