poll() システムコールはほとんどの Unix システムでサポート されており、非常に多数のクライアントに同時にサービスを提供するような ネットワークサーバが高い拡張性を持てるようにしています。 poll() に高い拡張性があるのは、select() が ビット対応表を構築し、対象ファイルの記述子に対応するビットを立て、 その後全ての対応表の全てのビットを線形探索するのに対し、 poll() は対象のファイル記述子を列挙するだけでよいから です。 select() は O(最大のファイル記述子番号) なのに対し、 poll() は O(対象とするファイル記述子の数) で済みます。
fd[, eventmask]) |
eventmask はオプションのビットマスクで、どのタイプの I/O イベント を監視したいかを記述します。この値は以下の表で述べる定数 POLLIN、 POLLPRI、および POLLOUT の組み合わせにすることが できます。ビットマスクを指定しない場合、標準の値が使われ、 3 種のイベント全てに対して監視が行われます。
定数 | 意味 |
---|---|
POLLIN | 読み出せるデータの存在 |
POLLPRI | 緊急の読み出しデータの存在 |
POLLOUT | 書き出せるかどうか: 書き出し処理がブロックしないかどうか |
POLLERR | 何らかのエラー状態 |
POLLHUP | ハングアップ |
POLLNVAL | 無効な要求: 記述子が開かれていない |
すでに登録済みのファイル記述子を登録してもエラーにはならず、 一度だけ登録した場合と同じ効果になります。
fd) |
登録されていないファイル記述子を登録解除しようとすると KeyError 例外が送出されます。
[timeout]) |
(fd, event)
からなるリスト
を返します。リストは空になることもあります。
fd はファイル記述子で、event は該当するファイル記述子
について報告されたイベントを表すビットマスクです -- 例えば
POLLIN は入力待ちを示し、POLLOUT はファイル記述子
に対する書き込みが可能を示す、などです。
空のリストは呼び出しがタイムアウトしたか、報告すべきイベントが
どのファイル記述子でも発生しなかったことを示します。
timeout が与えられた場合、処理を戻すまで待機する時間の長さを
ミリ秒単位で指定します。timeout が省略されたり、負の値であったり、
あるいは None の場合、そのポーリングオブジェクトが監視している
何らかのイベントが発生するまでブロックします。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。