- 375 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:34:42 ]
- C# 2.0
で質問です System.Threading.ManualResetEvent のインスタンスを使用して1ミリ秒のウェイト処理をループ中にかけようとしているのですが ・Vista環境だと上手く1mSec 程度停止するのに ・XP環境だと15mSec程度まで跳ね上がる時があります。 OSの分解能ということで1mSecは諦めるしかないのでしょうか? 用途は最高速で常時まわしたい処理を以下のソースのWhileの中に組み込んでHOGEの処理をしているのですが 可能であれば10mSec以下で1ループを終わらせたいのです。(中の処理は2〜3mSec程度) ただしこのままでは別スレッドで実行しているにもかかわらずCPU負荷率が高すぎるために 最低レベルでのスレッド停止処理を行いたいのです。 ちなみにSystem.Threding.Thred.Sleep(1); を行うとVista環境でも1mSecより大きく停止してしまいます。 System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false); While(True) { HOGE();//処理 //ストップウォッチ計測開始 mre.WaitOne(1); //ストップウォッチ計測終了 if(exitFlag == true) break; } 何とか最速でまわしつつ負荷を上げずにWhile文を回し続ける方法はないでしょうか?
|

|