2012-02-05 15 views
0

私は現在、udpソケット接続を介してデータを受信するために、リアルタイムスケジューリング用に3つのスレッドを使用しているアプリケーションを持っています。 3つのスレッドを使用してデータパイプラインを高速化します。つまり、データをポーリングしてrecvバッファから取得し、もう1つはキューにデータをコピーし、もう1つはファイルに書き込みます。udpソケット接続のボトルネックを引き起こす複数のリアルタイムスレッド

複数のリアルタイムスレッドを使用すると、udp接続に問題が発生します。たとえば、データをコピーしようとしているスレッドが、バッファからデータを取得しようとしているスレッドに対して競合する場合などです。

答えて

1

はい、スレッドの優先度をリアルタイムに上げることは悪い考えです。詳細はthis postを参照してください。

反対のアプローチを考えましたか?同じスレッドの2つ以上のコピーを持ち、読み取りとコピー操作を行う。最初のスレッドが読み込みを完了し、データをキューにコピーするとすぐに、2番目のスレッドがすでに読み込みを開始するように、これらのスレッドを同期させます。キューからのデータをファイルに保存するのは、複数のディスクがある場合を除いて、単一のスレッドで行うのが最適です。

関連する問題