単純化された形式で実際のハンドラーに渡される前に、何らかの処理が必要な複雑なメッセージの着信ストリームがある場合があります。
FIFO ファイル記述子を使用したいと思います。一方のスレッドが一方の端からそれを満たし、もう一方のスレッドがもう一方の端から読み取っています。今、私が望んでいる種類の動作: 読み取りスレッドは で待機しておりselect()
、ウェイクアップ時に への呼び出しで読み取ることができる完全なパッケージがあることを保証しread()
たい、つまり、再アセンブルする必要がないようにしたいバッファー サイズによる断片化のためのパッケージ (パッケージは、カーネルからユーザー空間へのバッファー通過制限を下回ることが保証されています)。
ファイル記述子の準備ができたとき、つまり、プロデューサーが完全なパッケージを正常に書き込んだときを手動で定義できるように、FIFO を構成する方法があるかどうかを知りたいです。読み取りの準備ができている読み取り終了 (ファイル記述子を介して)。これを実現する方法ioctl()
はありますか、または (Linux の世界で) この動作を提供する FIFO 以外に何らかの抽象化がありますか? (変数と条件変数については知っていpthread
ますが、プロデューサーとコンシューマーの間の結合を共有ファイル記述子に制限したいと思います。)