0

私は、あるデバイスから別のデバイスへの入力を変換するアプリケーションを作成しています。たとえば、あるフォーマットのヘッド トラッキングを別のフォーマットに変換します。主に、ゲームで複数のタイプのヘッド トラッキングをサポートするために使用されます。

ほとんどの場合、私のプログラムへの入力は、共有メモリをポーリングすることによって配信されます。ただし、タイトなループでこれを行うと、不必要に CPU コアが消費されます。アプリケーションがゲーム体験を低下させないことが不可欠です。

Windows のデフォルトのスケジュール時間は 60 Hz のようです。必要なのは 5 ミリ秒未満ですが、時折のブリップは問題ありません。

システム全体のタイマーに影響を与えることで、システム構成に影響を与えたくないのです。

Cまたは.netを使用して、コアの消費を防ぎながら、1〜5ミリ秒ごとに1回程度メソッドを実行するためのオプションは何ですか?

Windows 7 のソリューションを探しています。

4

2 に答える 2

2

次の 2 つのオプションしかないようです。

  1. Multimedia Timersを使用していますが、そのアイデアが気に入らないようです。
  2. すべての長いループに関数呼び出しを散りばめ、そこをチェックし、適切なタイミングで実行する必要があるものを実行しますTSCPerformance Counter
于 2013-04-15T10:00:10.690 に答える
-1

プロセス間同期が問題ない場合は、SetTimer関数を使用してみてください。ミリ秒間隔でコールバックを呼び出すことができます。

ミリ秒単位のスリープが必要な場合は、 を使用できますWaitForSingleObject。自身の状態を変更しないイベント ハンドルを指定するだけです。

ただし、Windows ではタイミングの保証がなく、システムが過負荷になると結果があまり良くないため、これらすべてのオプションはまったく信頼できません。

于 2013-04-15T09:51:12.117 に答える