标题真的说明了一切。
and ... 表示还包括 pselect 和 ppoll..
我正在处理的服务器项目基本上是由多个线程构成的。每个线程处理一个或多个会话。所有线程都是相同的。该协议负责哪个线程将主持会话。
我正在使用一个内部套接字类来包装东西。兴趣点是调用 poll (linux) 或 select (windows) 的 checkread 调用。
总之,每个线程当前在单个套接字上调用 poll。据我所知,只有当这个线程正在查看多个套接字时,使用 epoll 才会有好处,比如你会得到一个 HTTP 服务器。在我的情况下,这不是我正在做的事情。并且该类一次只处理一个套接字。
在 epoll 的手册页中有一些关于边缘和电平触发的简短讨论。我不太确定这意味着什么。在套接字类中,我在代码的 windows 部分看到了一个优化,它使用 ioctlsocket 和 FIONREAD 快捷方式选择调用,以检查是否有任何数据。想知道即使在调用时没有完整的 UDP 数据包到达,它是否会返回 > 0。这就是epoll中的边缘触发吗?
在一些基本测试中,我也发现使用 select 和 poll 之间没有明显区别。
我可以看到使用 ppoll 可能会有好处,尽管由于超时精度更高。有什么想法吗?
是的,我正在尝试优化接收大量数据的会话的吞吐量。服务器比 CPU 更受网络和磁盘的限制。