1

Windows XP マシンで作成した Delphi Pro 6 アプリケーションを Windows 7 で実行すると、問題が発生します。まだテストする Windows 7 がなく、Windows 7 がトラブルの元。Windows 7 と Windows XP のスレッドの処理方法に根本的な違いはありますか? Windows 7 のエラー ログで順序が正しくないことがわかり、問題が発生しています。たとえば、初期化する必要があるオブジェクトは、Windows 7 で実行すると初期化されませんが、それらのオブジェクトは必要になるまでに Windows XP で初期化されます。

いくつかの質問:

1) 2 つのオペレーティング システム バージョン間でスレッド/プロセスの動作が異なる原因となるコアの違いはありますか?

2) 次の質問がばかげているように思えるかもしれませんが、Windows 7 は、Windows XP で分割/分岐されていないスレッドを分割/分岐しようとしますか?

3) 最後に、Windows 7 で実行した場合に XP プログラムに問題を引き起こす可能性がある FPU 処理に関する既知の問題はありますか。

4) ここで問題を引き起こす可能性のある 32 ビット対 64 ビットの問題はありますか?

5) 複数のスレッドを使用していますが、バックグラウンド スレッドはクリティカル セクションによって完全に保護されています。私が気にする必要がある違いはありますか?

-- ロシュラー

4

1 に答える 1

1

Windows XP以降、Microsoftはロックの解放方法を変更し、FIFO順に次の待機中のスレッドに必ずしも移行しないようにしました。この変更により、XPでは表示されなかったコードの競合状態が明らかになった可能性があります。

詳細については、JoeDuffyのブログをご覧ください。WindowsServer2003SP1およびWindowsVistaのコンボイ防止ロック

(残念ながら、実際のMSがホストする記事を掘り下げることはできませんでした。これは、ある種のKB記事などで言及する必要があるようです)

于 2010-12-22T05:09:38.543 に答える