での議論に続いて、単一のイベントループでAIOとepollをどのように一緒に使用しますか?。
実際、Linuxには2つの「aio」APIがあります。posIX aio(aio_ *ファミリーの関数)があります。これは、io_ *ファミリーであるRedHat(?)によって開発されたglibcとlibaioに含まれています。
1つ目は、aio_sigeventaiocbメンバーを介した通知要求の登録を許可します。これは、ppoll()/ pselect()イベントループと簡単に統合できます。POSIX aioをepoll()と統合する場合は、信号をダミーfd(パイプなど)のイベントに変換し、epollでリッスンする必要があります。その間、従来の方法またはppoll/で信号をキャッチします。選択する。最初の選択肢(通常のシグハンドラー)の安全性は、アプリケーションによって異なります。そして多分epollにありますが、私はその内部を完全には認識していません。私がepollベースのアプリを持っていて、POSIX aioサポートを追加したい場合、私は困惑していると安全に想定できますか?これが私の質問でした。
2番目のAIO実装であるlibaioは、実際にeventfd()で使用できます(ゼロであると予想されるaio_resfdメンバーまたはAIO結果を配信するeventfdを持つstruct iocb)。しかし、それは本によるものではありません。POSIX指定、つまり。
私は自分がすべてが明確な*BSDユーザーになることを夢見ています。AIOイベントに対するPOSIXAIOおよびkqueue()のサポートがあります。クリスタルクリア。他の多くのものと同じように。