select vs poll vs epoll [已关闭]

问题描述 投票:0回答:2

我正在设计一个新服务器,需要支持数千个 UDP 连接(大约 100,000 个会话)。有人可以解释一下

select
vs
poll
vs
epoll
吗?它会帮助我知道该使用哪一个。

linux sockets epoll posix-select
2个回答
51
投票

如果您使用 Linux,答案是 epoll;如果您使用 FreeBSD 或 Mac OS X,答案是 kqueue;如果您使用 Windows,答案是 i/o 完成端口。

您(几乎肯定)想要研究的一些其他内容是:

  • 负载均衡技术
  • 多线程网络
  • 数据库架构
  • 完美的哈希表

此外,重要的是要注意,与 TCP 不同,UDP 没有“连接”。由于调试基于网络的解决方案可能具有挑战性,因此从小规模开始并扩大规模也符合您的最大利益。


21
投票

Linux:

epoll
FreeBSD:
kqueue
窗户:??

有一些包装库,例如 libevent 和 libev,可以为您抽象这一点。

© www.soinside.com 2019 - 2024. All rights reserved.