poll/epollの違い
poll/epollの違い
pollだと
pollの呼び出しごとに監視する配列を毎回ユーザ空間→カーネルへコピーして全件走査するため$ O(n) の計算量がかかる
ソケット?の待ち状態、ブロッキングが発生する
POSIXで定義されているのでいろいろな環境で使える
レベルトリガー(LT)のみ
レベルトリガーは、ファイルディスクリプタが読み取り可能になったらイベント通知が来続ける
epollだと
ファイルディスクリプタの監視が$ O(1) の計算量で実施できる
IOのブロッキングがないので並列化できる?
カーネル空間にファイルディスクリプタを作るので早い?
ファイルディスクリプタの監視をカーネル空間で行っている
Linuxのみで使える(Linux 2.5.44以降)
エッジトリガー(ET)、レベルトリガー(LT)の両方が使える
エッジトリガーは、ファイルディスクリプタが読み取り可能になったときに1回だけイベント通知が行く
レベルトリガーとエッジトリガー
確認用
Q. pollとは
Q. epollとは
Q. poll,epollの違い
参考
★I/Oを多重化するためのシステムコール(select, poll, epoll, kqueue) - $shibayu36->blog;. 2012-01-01
★select vs. poll vs. epoll
【C言語】select/pselect/poll/ppoll/epoll関数の違い. 2023-12-02
関連
select
kqueue
C10K問題
libuv
libevent
メモ
Ubuntu Manpage: poll, ppoll - ファイルディスクリプタにおけるイベントを待つ
epoll - 約束事その他の説明 - Linux コマンド集 一覧表
C10K問題に関係がある
c++ - With a single file descriptor, Is there any performance difference between select, poll and epoll and ...? - Stack Overflow
#ソケット通信