Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengganggu Pelaksanaan Goroutine (*TCPListener) dengan Anggun. Terima()?

Bagaimana untuk Mengganggu Pelaksanaan Goroutine (*TCPListener) dengan Anggun. Terima()?

DDD
DDDasal
2024-11-03 16:53:03820semak imbas

How to Gracefully Interrupt a Goroutine Executing (*TCPListener).Accept()?

Mengganggu Pelaksana Goroutine (*TCPListener) Terima

Apabila membuat pelayan yang bertindak balas kepada pelanggan melalui sambungan TCP, go-routine sering digunakan untuk mengendalikan sambungan masuk menggunakan (*TCPListener).Terima(). Timbul persoalan tentang cara menutup pelayan dengan bersih dan mengganggu goroutine yang disekat dalam panggilan ini.

Dokumentasi untuk (*TCPListener).Accept() menyatakan bahawa ia menunggu sambungan seterusnya dan mengembalikan generik Samb. Walau bagaimanapun, ia memberikan maklumat terhad tentang cara untuk mengganggu operasi menyekat ini.

Penyelesaian terletak pada penggunaan (TCPListener).Close(), yang menutup pendengar dan menyebabkan goroutine melaksanakan (TCPListener).Terima() untuk kembali. Ini membolehkan pelayan ditutup dengan anggun dan rutin harian terganggu. Laluan rutin hendaklah kembali daripada panggilan dan membenarkan pelayan keluar dengan bersih.

Atas ialah kandungan terperinci Bagaimana untuk Mengganggu Pelaksanaan Goroutine (*TCPListener) dengan Anggun. 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