こんにちは、epoll で監視している記述子内に特定のファイル記述子が必要です入力を開始すると、別のブロードキャストメッセージが到着し、書いている内容が台無しになるため、ブロックする必要があるもの。
ファイル記述子のイベントを一時停止してデータの準備ができたことを検出する方法、またはデータの準備ができたときに別のファイル記述子をブロックする方法はありますか?
いくつかの方法があります。
(エッジ トリガー)を使用している場合EPOLLET
、ウェイクアップ時のイベント ハンドラーは、コンソールから入力された入力を処理している最中かどうかを最初に確認できます。その場合、何も読み取れませんが、フラグを設定できます。型指定された入力ハンドラーが完了すると、そのフラグをチェックし、手動でソケット入力ハンドラーを起動してデータを処理します。
代わりにレベル トリガーを使用している場合は、そのファイル記述子のイベント セットを変更して、無視するイベントを抑制することにより、イベントを抑制することができます。これはEPOLL_CTL_MOD
、新しい一連のイベントで使用EPOLL_CTL_DEL
するか、ファイル記述子をepoll
完全に登録解除するために使用できます。型入力ハンドラーの使用が終了したら、抑制されたものを元に戻します。