c-客户端select()的替代项



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

select()主要用于多个连接,但我的客户端只有一个连接。因此,我问自己是否有其他功能可以识别单个套接字上的I/O。这可能会更快,而且我不需要所有的fd_set处理。

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

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

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

最新更新