首頁 > 後端開發 > Golang > 主體

如何優雅地中斷正在執行的 Goroutine (*TCPListener).Accept()?

DDD
發布: 2024-11-03 16:53:03
原創
824 人瀏覽過

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

中斷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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板