C#, C♯, C#相談室 P ..
375:デフォルトの名無しさん
09/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文を回し続ける方法はないでしょうか?
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5035日前に更新/223 KB
担当:undef