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 の場合、そのポーリングオブジェクトが監視している
何らかのイベントが発生するまでブロックします。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。