なぜ1ミリ秒の待機関数を置いたループは実行するのに2ミリ秒かかるのでしょうか?



ハードウェア: PXI/CompactPCI>>Controllers

問題:
Forループ内に1ミリ秒の「待機(ms)(Wait(ms))」VIのみを配置しています。Forループを10,000回実行させると20秒かかります。1ループ毎に1ミリ秒ではなく、2ミリ秒かかっています。「次のミリ秒倍数まで待機(Wait Until Next ms Multiple)」VIを使用しても同じ現象です。なぜこのような結果になるのですか?

解決策:
待機関数で1ミリ秒待機しているのにかかわらず2ミリ秒かかってしまう現象は、Windowsの待機関数実装法の影響を受け、Windowsのスケジューラは最短2ミリ秒の分解能まで対応しています。この現象はプロセッサによって異なり、Pentium 4プロセッサの方がPentium 3プロセッサなどよりも起きやすいようです。

LabVIEW 7.1のタイミングループは、Windowsスケジューラを使用せずに実装されているため、1ミリ秒の分解能は保障されています。1ミリ秒単位の待機が必要な場合は、「タイミングループ」を使用されることをお勧めします。

関連リンク:
"Wait Until Next ms Multiple"関数は一番最初のループの待ち時間を正確に刻むことができません。
"Wait (ms)"と "Wait Until Next ms Multiple"の違いはなんですか?

添付:





報告日時: 04/28/2005
最終更新日: 03/02/2009
ドキュメントID: 3KR79BDW