Masalah:
Berbeza dengan paradigma Go concurrency, TCPListener. Fungsi Accept() dalam Go ialah panggilan sistem menyekat yang nampaknya bercanggah dengan tumpuan bahasa pada saluran untuk konkurensi. Nampaknya tiada sokongan yang wujud untuk select() dengan Accept() atau pilihan untuk mengawal tingkah laku menyekat.
Jawapan:
Kebimbangan tentang goroutine yang berasingan untuk setiap soket mendengar adalah sah. Rutin Go ialah benang ringan yang diuruskan oleh masa jalan, menjadikan operasi menyekat sesuai. Masa jalan memilih antara rutin ini dengan berkesan, menyediakan gelagat yang diingini tanpa mekanisme yang boleh dilihat.
Untuk melaksanakan operasi seperti pilih dengan tamat masa, pertimbangkan pendekatan berikut:
Pantau saluran newConns dalam penyataan pilihan:
Dengan menggunakan saluran dan goroutin, pendekatan ini membolehkan pemultipleksan aktiviti pendengar dan pengendalian tamat masa sambil masih mematuhi model konkurensi Go.
Atas ialah kandungan terperinci Bagaimanakah TCP Accept sesuai dengan Model Concurrency Go, Walaupun Disekat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!