如果我有一个TCP连接conn
,如何确定conn.Read
是否会阻塞?
我的理解是,Go's Read使用非阻塞套接字,并且只会在没有可用数据读取时阻塞(请参阅https://stackoverflow.com/a/36117724/4447365)。
但是有什么方法可以检查套接字是否没有可用数据?
这可以通过使用count
参数为零的POSIX read function来实现。
答案 0 :(得分:1)
在Go中编程时,不必担心。假设一切都会阻塞。然后将其放在goroutine中,以便它无论如何都能异步运行。
Go运行时处理所有细节。
此外,the issue here似乎就是您想要做的。问题被拒绝:Go不会这样做。 C也不会。即使这样做,也不可靠。如果您读到最后,建议的解决方案涉及Linger TCP设置。