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

如何中斷 (*TCPListener) Accept 中阻塞的 goroutine?

Barbara Streisand
發布: 2024-11-01 07:31:30
原創
1059 人瀏覽過

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

中斷(*TCPListener) Accept 中阻塞的Goroutine

開發回應TCP 客戶端的伺服器時,開發者可能會遇到需要徹底關閉的情況伺服器並中斷目前在(*TCPListener) Accept 函數中阻塞的goroutine。這個函數負責等待下一個客戶端連線並傳回一個通用的Conn。

但是Accept的文檔說明它等待下一個調用,這可能會導致對如何中斷阻塞的goroutine產生困惑。該文件也缺乏全面的錯誤處理資訊。

要解決此問題,只需對從 net.Listen(...) 呼叫取得的 net.Listener 物件使用 Close() 方法即可。此操作關閉偵聽器,中斷在 Accept 中等待的 goroutine。必須立即從正在執行的 Goroutine 返回,以防止任何潛在的競爭條件。

以上是如何中斷 (*TCPListener) Accept 中阻塞的 goroutine?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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