我有一个用于写操作(发送)的非阻塞套接字。
我想知道select()是否是唯一可以检测的方法: - 当connect返回EINPROGRESS时,套接字连接成功完成 - 发送返回EWOULDBLOCK或EGAIN
时写入操作的套接字的可用性轮询select()的替代方法吗?在我的应用程序中,我已经有一个线程,每1秒唤醒一次,如果connect()返回0(连接正常),则返回循环检查,如果必须发送一些字节,则发送返回0(发送正常)。 / p>
答案 0 :(得分:0)
轮询select()的替代方法吗?
这是另一种选择,但不是一种好选择。你不知道要睡多久。 select()
。平均而言,手动轮询必须睡眠每次尝试所需的时间加倍,并且在循环直到成功时浪费CPU周期。 select()
没有任何这些问题。