選択:ポーリング+ FD_SET
1. FDのFD_SETストレージの使用は、(FD_SETビットマップアレイによって実現されます)
2.各呼び出しは、カーネルモードために、ユーザーモードをコピーするFDの必要性、より大きなオーバーヘッドfdのセットから、選択します
3.各select呼び出し、あなたはカーネルFDに渡さ横断する必要がある、大きなオーバーヘッド(世論調査)
4.selectは、1024少なすぎるfdでサポート
選択5.コールは、ハンドル全体を含む配列を返します、あなたは(ポーリング)イベント扱う何が起こったかを知るために配列全体をトラバースする必要があります
6.selectトリガーLTモデルは効率的ではありません
世論調査:ポーリングリスト+
1.リンクされたリストを格納するfdは、fdは数量を限定するものではないが、他の欠点は上記のままで
epoll:赤黒木+ +コールバックメカニズム二重にリンクされたリスト
1.赤黒木、イベントをマウント二重リストを連結する入射コールバック機構によって入射の時間を追加
イベントがあるかどうか2.チェックは、何のポーリングを発生していない、ただのリストを再確認
3.各FDが回だけコピーされることを確実に(イベントがファイルディスクリプタに追加されたときに、FDの代わりにコピーする、カーネルにコピーされるときにイベントがepoll_wait)
開くことができるファイルの最大数4.fd数の上限
私たちは、一般的にreadyイベントと呼ばれる二重リンクリスト
//最初のコードでは、これら三つのメカニズムの実現の後ろに自分で準備します