中斷Goroutine 執行(*TCPListener) Accept
當建立透過TCP 連線回應客戶端的伺服器時,go-routine通常用於使用(*TCPListener).Accept() 處理傳入連線。問題是如何乾淨地關閉伺服器併中斷在此呼叫中阻塞的 goroutine。
(*TCPListener).Accept() 的文件指出它等待下一個連線並傳回一個通用的Conn。但是,它提供了有關如何中斷此阻塞操作的有限資訊。
解決方案在於使用 (TCPListener).Close(),它會關閉偵聽器並導致 goroutine 執行 (TCPListener).Accept() 回傳。這允許伺服器正常關閉併中斷 go-routine。然後 go-routine 應該從呼叫中返回並允許伺服器乾淨地退出。
以上是如何優雅地中斷正在執行的 Goroutine (*TCPListener).Accept()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!