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) の間で boost::asio の実装に違いがありますか? )?

4

1 に答える 1

1

プラットフォーム固有の実装に関する注意事項では、サポートされているプラ​​ットフォームと、イベント逆多重化の実装方法について説明しています。新しい Linux カーネルは使用epoll(4)しますが、古いバージョンは を使用しますselect(2)。AIX と HP-UX はどちらも を使用しますselect(2)

kqueue(2)Mac OS X や iOS などの BSD システムで使用されます。これは、Linux の場合と非常によく似てepollいます。

一般的に言えば、epollよりも優れたパフォーマンスを発揮しますselect。を使用すると、記述子selectのリストに対して線形検索が実行されます。これは です)。epoll の使用には、記述子を epoll 記述子に追加する際の構造の概念があります。これは、待機するイベントのリストを変更するのは多少コストがかかることを意味しますが、これらのイベントの待機は非常に高速です。nO(nepoll_eventO(1)

于 2013-06-29T02:31:16.097 に答える