Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengganggu goroutine yang disekat dalam (*TCPListener) Terima?

Bagaimana untuk mengganggu goroutine yang disekat dalam (*TCPListener) Terima?

Barbara Streisand
Barbara Streisandasal
2024-11-01 07:31:301068semak imbas

How to interrupt a goroutine blocked in (*TCPListener) Accept?

Mengganggu Goroutine yang Disekat dalam (*TCPListener) Terima

Apabila membangunkan pelayan yang bertindak balas kepada klien TCP, pembangun mungkin menghadapi situasi di mana mereka perlu menutup dengan bersih pelayan dan mengganggu goroutine yang sedang disekat dalam (*TCPListener) fungsi Terima. Fungsi ini bertanggungjawab untuk menunggu sambungan pelanggan seterusnya dan mengembalikan Sambungan generik.

Walau bagaimanapun, dokumentasi untuk Accept menyatakan bahawa ia menunggu untuk panggilan seterusnya, yang mungkin menyebabkan kekeliruan tentang cara mengganggu goroutine yang menyekat . Dokumentasi juga tidak mempunyai maklumat pengendalian ralat yang komprehensif.

Untuk menangani isu ini, hanya gunakan kaedah Close() pada net.Listener object yang diperoleh daripada net.Listen(...) call. Tindakan ini menutup pendengar, mengganggu goroutine menunggu dalam Terima. Adalah penting untuk segera kembali dari goroutine pelaksana untuk mengelakkan sebarang keadaan perlumbaan yang berpotensi.

Atas ialah kandungan terperinci Bagaimana untuk mengganggu goroutine yang disekat dalam (*TCPListener) Terima?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn