2

誰かがこれで私を助けてくれることを願っています(英語は私の母国語ではないので、文法やスペルミスについては事前に申し訳ありません):

私がコーディングしているプロジェクトの一部として、いくつかのコマンドの時間を計る必要があります。より具体的には、2セットのコマンドがあります(セットAとセットBと呼びましょう)-セットAを実行し、特定のミリ秒数(セットAで計算)待ってから、セットBを実行する必要があります。セット間で Sleep(time) コマンドを使用します。

ここで、単に何もしないのではなく、セット A と B の間の時間にループで実行される別のコマンド セット (セット C) を組み込む必要があります。つまり、プログラムが以前にアイドル状態だった時間の代わりに (指定されたミリ秒数を待ってた)、C セットをループする必要があります .

スレッドを使用せずにこれを行うにはどうすればよいですか? (そして、一般的にできるだけシンプルに保ちます)

4

1 に答える 1

1

Cの一連のコマンドの「作業時間」はわかっていると思います。また、Cは、待機時間が経過したときに終了できる/終了するループです。

この場合、パフォーマンスカウンターを使用して待機時間をカウントダウンすることをお勧めします。何が計算され、何がCに導入されるかに応じて、取得する精度はマイクロ秒の範囲になります。

擬似コード:

Delay = 1000
Do A
CounterBegin = GetCounter()
// and now the C loop
while ((GetCounter() - CounterBegin) < Delay) {
   Do C
}
Do B

注:カウンター値は、カウンター周波数を使用して時間に変換されます。詳細については、上記のリンクを参照してください。

于 2012-08-29T10:07:03.977 に答える