選択のepollの理解、の世論調査

選択:ポーリング+ 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イベントと呼ばれる二重リンクリスト


//最初のコードでは、これら三つのメカニズムの実現の後ろに自分で準備します



おすすめ

転載: www.cnblogs.com/yinbiao/p/10945624.html