客户端select()的替代方案

时间:2013-07-24 12:04:26

标签: c sockets posix-select

对于TCP非阻塞套接字连接的客户端,是否有select()的替代方法?

select()主要用于多个连接,但我的客户端只有一个连接。结果,我问自己是否有一个替代功能来识别单个插槽上的I / O.这可能会更快,我不需要所有的fd_set处理。

2 个答案:

答案 0 :(得分:2)

Select()可以帮助您一次监控读取和写入事件(以及异常事件),因此它确实可以扩展,而不是应用程序必须检查(因为它是非阻塞的)。您可能应该澄清什么是您的最终设计目标。当然,正如有人提到的那样,有两个线程,一个用于读写,可能会做同样的事情。事实上,如果你有更高的工作负载,你可以超过两个并实际保留一个线程池。

答案 1 :(得分:0)

您应该在客户端使用select(),如果您只使用select一个套接字就不会更快。

顺便说一句select()不适用于多个连接......在现实世界中,由于其性能问题。仅为了您的信息,请查看适用于Windows的/dev/poll / epoll() / kqueue()io completion port