似乎有几个选项可用于处理大量套接字连接的程序(例如Web服务,p2p系统等).
产生一个单独的线程来处理每个套接字的I/O.
使用select系统调用将I/O多路复用到一个线程中.
使用轮询系统调用来多路复用I/O(替换选择).
使用epoll系统调用以避免必须通过用户/系统边界重复发送套接字fd.
产生许多I/O线程,每个线程使用poll API复用一组相对较小的连接总数.
按照#5,除了使用epoll API为每个独立的I/O线程创建一个单独的epoll对象.
在多核CPU上,我希望#5或#6具有最佳性能,但我没有任何硬数据支持这一点.搜索网页出现了这个页面,描述了上面作者测试方法#2,#3和#4的经验.不幸的是,这个网页似乎是7岁左右,没有明显的最新更新.
所以我的问题是,哪些方法让人们发现效率最高和/或是否有另一种方法比上面列出的方法更好?将赞赏对现实生活图,白皮书和/或网络可用书面的参考.