1

ソケット fds のリストを監視し、POLLIN イベントを待機しています。

まず、配列に fds を追加し、この配列で poll() を実行します。さらに、場合によっては、この配列から fd を (閉じずに) 削除したいことがあります。また、poll() の実行と同時に発生する場合もあります。

poll() の開始時にわかったのは、カーネルが配列をキャッシュし、pollfds を待機しているため、すぐに fd を削除したことを認識できないということですよね?

eventfd() でウェイクアップ メカニズムを実装し、それを使用してスレッドをウェイクアップし、配列から fd を削除し、引き続き新しい配列で poll() を実行できることがわかりました。

まず、poll() の実行中に pollfds 配​​列から fd を削除するだけでは、poll() はすぐにわからないというのは正しいですか? そして、明確にするために、pollfds配列の待機からfdを削除するための別のメカニズム(ウェイクアップメカニズムを除く)があるかもしれません.poll()はすぐに中断されますか?

4

1 に答える 1