selectvs民意调查vs epoll

我正在devise一个新的服务器,需要支持数千个UDP连接(大约100,000个会话)。 任何input或build议使用哪一个?

CURL的作者写了一篇关于民意调查vs select和事件库的精彩文章。

如果你使用Linux,答案是epoll,如果你使用的是FreeBSD或Mac OS X,则是kqueue,如果你使用的是Windows,则是I / O完成端口。

你会(几乎肯定)想要研究的一些额外的东西是:

  • 负载平衡技术
  • multithreading联网
  • 数据库架构
  • 完美的哈希表

此外, 重要的是要注意,UDP不具有“连接”而不是TCP。 由于debugging基于networking的解决scheme可能具有挑战性,因此从小规模开始并扩大规模也是符合您的最佳利益的。

Linux: epoll FreeBSD: kqueue Windows:??

有一些包装库,比如libevent和libev,它们可以为你抽象。