2011-08-01 10 views
1

私はWinXPからWin7に移動しました。 私のソフトウェアはI/Oにリアルタイムで応答する必要があるので、1つのスレッド(1つのCPU上で動作するように親和性があります)でビジー待機します。リアルタイム優先度の1つのスレッドがWindows 7をフリーズします。

結果は、コアの1つで100%、他のCPUで0%です.Winows XPでは正常に動作しました。 Windows 7では、システムがフリーズします。 (ソフトウェアはコンソールアプリケーションですが、Windowsアプリケーションの場合は動作が少し異なりますが、メインスレッドがメッセージを覗き見せずにビジー状態になる場合にのみ)

アイデアはありますか?

+0

IIRC「システム」スレッドは、リアルタイム優先度で動作します。 Win7では、システムがフリーズしているので、おそらくノーマルになりました。 – CodingBarfield

答えて

1

リアルタイムI/O用に非リアルタイムOSを使用しています。単にコードが正しく動作していないので、ビジー待機ではない(スリープ待機に変わる)ループを行い、スレッドタイマーの設定をリアルタイムで十分に変更する必要があります。

タイマーコールバックでミリ秒精度のウィンドウを設定するには、この質問を参照してください。

How to trigger a C# function at a certain time with millisecond precision?