2

在 Windows 中,完成事件队列由操作系统实现,并与 I/O 完成端口相关联。 http://www.boost.org/doc/libs/1_37_0/doc/html/boost_asio/overview/core/async.html

但是这个(select、epoll 或 kqueue)在 Unix 和 Linux 上用于最大性能是什么,在 Unix(AIX,HP-UX)和 Linux(RedHat,Ubuntu )?

4

1 回答 1

1

平台特定的实现说明描述了支持的平台以及如何实现事件解复用。较新的 Linux 内核将使用epoll(4),而较旧的版本使用select(2). AIX 和 HP-UX 都使用select(2).

kqueue(2)用于 BSD 系统,包括 Mac OS X 和 iOS。它与 Linux 上的非常相似epoll

一般来说,epoll会表现得比select. 使用 时select,它对n描述符列表执行线性搜索,即O(n)。使用 epollepoll_event在 epoll 描述符中添加描述符时有结构的概念。这意味着修改要等待的事件列表有些昂贵,但等待这些事件的速度非常快O(1)

于 2013-06-29T02:31:16.097 回答