FIFO で受信したイベントを待機しているスレッドがあります。ほとんどのイベントは、同じプロセス内の別のスレッドから送信される構成イベントです。FIFO に書き込む割り込みハンドラを使用して、スレッドが割り込みイベントを処理できるようにしたいのですが、それは可能ですか?
FIFO を使用する代わりに他の提案を歓迎します!
はい、できます。割り込みハンドラの使用は、非同期 I/O を処理する新しい方法の 1 つです。
これを行うより一般的な方法は、select、poll、または Linux epoll コマンドを使用することです。
イベントが利用可能なときにコードを「中断」するのではなく、イベントを処理し、「ポーリング」ループに戻って、前のイベントが終了したときにさらにイベントを取得できるため、これらの方が間違いなく少し優先されます。これらのメカニズムは、多数の異なるファイル記述子を同時に待機し、使用可能なファイル記述子を返すことができます。
割り込みハンドラーは、おそらくやりたいことではありません。あるイベントの処理中に、別のイベントの準備ができていることを知るために、必ずしも割り込まれたくないからです。そうした場合、後で処理するために、とにかくリクエストをキューに入れることになるでしょう。これはまさに poll と epoll が最初に行うことです。
Linux を使用している場合は、「epoll」が最適です。そうでない場合 (または POSIX 準拠が必要な場合) は、"poll" を使用してください。「select」は「古い」メソッドであり、リクエストもキューに入れません。