1

いろいろ試した結果、この新しいスレッドを開きました。私のアプリケーション (VS2010 の C++) は、画像を取得し、画像を作成し、UDP を介して結果を送信する必要があります。問題は頻度です: 200 回/秒。そのため、私は 200Hz でダブル バッファに画像を記録するカメラを持っており、画像を 5 ミリ秒未満で処理する必要があります。アプリケーションは 99,999% の確率で動作しますが、Win7 Pro が私のリアルタイムの優先順位を奪うので、100000 件に 1 件の確率で何か問題が発生すると思います。msdn フォーラムなどを読むと、次のものしか使用できません。

  1. SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS); 管理者権限で起動されたプロセスのリアルタイム優先度を取得するには
  2. SetThreadPriority(HANDLE, THREAD_PRIORITY_ABOVE_NORMAL); または THREAD_PRIORITY_HIGHEST または THREAD_PRIORITY_TIME_CRITICAL。

これで、5 つのスレッド (_beginthreadex) が開始され、いくつかのスレッドがカメラのコンパイル済み DLL 内で開始されました。5 つのスレッドすべてに Time Critical 優先度を設定すると、どれも他のスレッドより優先度が高くないと思います。

だから私は2つの質問があります:

  • Windows のラグなしで 200 Hz で作業できますか?
  • 私のスレッドの設定について何か提案はありますか?

ありがとう!!さよならパオロ

4

1 に答える 1

0

ああ、これには2つ以上のバッファを使用します。200 個の画像オブジェクトのプールがより良い賭けのようです。

全体的にどれくらいの遅延を許容できますか? ビデオ ストリーミングの場合は常に同じ話です。一貫性のある一時停止のない操作または低レイテンシーを実現できますが、両方を実現することはできません。

クライアント側のビデオ画像バッファ キューの大きさは?

編集:

「5ミリ秒ごとにUDPデータグラムを送信する必要があります」:((

OK、5 ミリ秒ループの UDP 送信スレッドを持つ画像出力キューがありますね。キューを空にしてはなりません。確かに精緻化がボトルネックであるように聞こえます。

[コア数+] の精緻化を行うスレッドのプールはありますか?

于 2012-07-06T10:38:00.967 に答える