我覺得這一定是一種常見的 Go 模式,但似乎找不到解決方案。假設有一個 Go 應用程序正在建立出站 TCP 連接。我將使用net.Dial并在連接后生成一個 Go 例程來處理套接字 ( net.Conn)。這是非常簡單和常見的。我想弄清楚的是,讓這個 Go 例程有一個通道,它正在讀取和寫入來自這個套接字的消息的最佳方法是什么?selectonly 能夠在頻道上等待,而不是net.Conn. 我是否輪詢套接字以獲取數據,然后檢查通道以獲取數據?這似乎非常低效。
1 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
這個問題的一個常見解決方案是創建兩個 goroutine:一個從套接字讀取并寫入通道,另一個從通道讀取并寫入套接字。從套接字讀取的 goroutine 應該在套接字關閉時終止,并向另一個 goroutine 發出信號(通過取消上下文或關閉通道),使其停止在通道上等待。
- 1 回答
- 0 關注
- 107 瀏覽
添加回答
舉報
0/150
提交
取消