对于TCP非阻塞套接字连接的客户端,是否有select()
的替代方法?
select()
主要用于多个连接,但我的客户端只有一个连接。结果,我问自己是否有一个替代功能来识别单个插槽上的I / O.这可能会更快,我不需要所有的fd_set
处理。
答案 0 :(得分:2)
Select()可以帮助您一次监控读取和写入事件(以及异常事件),因此它确实可以扩展,而不是应用程序必须检查(因为它是非阻塞的)。您可能应该澄清什么是您的最终设计目标。当然,正如有人提到的那样,有两个线程,一个用于读写,可能会做同样的事情。事实上,如果你有更高的工作负载,你可以超过两个并实际保留一个线程池。
答案 1 :(得分:0)
您应该在客户端使用select()
,如果您只使用select
一个套接字就不会更快。
顺便说一句select()
不适用于多个连接......在现实世界中,由于其性能问题。仅为了您的信息,请查看适用于Windows的/dev/poll
/ epoll()
/ kqueue()
和io completion port
。