在Luasocket中,即使select告诉接收调用可以安全读取,什么情况下可以阻塞接受呼叫?

Luasocket 中的 select 函数被用于在不阻塞的情况下判断 socket 是否可以被读取。它还可以用来判断服务端 socket 是否准备好接受新的连接,然而文档中给出了以下警告:

另一个重要提示: 在调用 accept 之前,将服务端 socket 传递给 select 的 receive 参数并不能保证 accept 立即返回。使用 settimeout 方法避免 accept 永远阻塞。

在什么情况下 acceptselect 表示可以安全读取时仍可能阻塞?是否有一种方法可以强制出现此问题进行测试?

点赞
用户207421
用户207421

我不知道他们从哪里得到这个想法。在20多年的网络编程中从未见过。

当然,如果您有多个select()线程,这种情况就可能发生,但我认为如果这是想要实现的目标,文档应该说明。

2013-04-15 02:19:10