0

Windows XP で Visual Studio を使用してコンソール C++ アプリケーションを開発しています。このアプリケーションは、スケジューラに対して可能な限り高い優先度でなければなりません。

 int main()
 {
     while ( somecondition )
     {
        // pick data from external hardware every 10 milliseconds
        // do computation 
     }

 }

これは、10 ミリ秒ごとにフレーム バッファを更新するように調整されたリアルタイム データ取得システムであるため、他のシステム プロセスが干渉してはならないということです。

各フレームの時間的な長さをファイルに保存しようとしましたが、目的の時間の周りに奇妙な「量子化」が見つかりました。なんで?

また、長さが基本フレーム時間の倍数になることもありますが、これは内部 OS プロセスの干渉が原因ですか?

プログラムの優先順位を最高にする方法はありますか?

4

1 に答える 1

2

必要なのはSetThreadPriorityを呼び出すことだけです

私はこのように使用しました:

HANDLE hThread = GetCurrentThread(void);
SetThreadPriority(hThread, THREAD_PRIORITY_TIME_CRITICAL);

他のアプリケーションでも同じことができるため、両方のスレッドの優先度が同じになることに注意してください。

于 2012-01-19T16:00:53.443 に答える