2010-12-22 75 views
1

我在Windows XP上運行Windows 7時在我的Windows XP計算機上編寫的Delphi Pro 6應用程序出現問題。我沒有Windows 7測試,但我試圖看看Windows 7可能是麻煩的來源。與Windows XP相比,Windows 7處理線程的方式有什麼根本區別?我在Windows 7的錯誤日誌中看到事情發生順序不正確,並導致問題。例如,應該初始化的對象在Windows 7上運行時未初始化,但這些對象在Windows XP中需要時才被初始化。Windows 7與Windows XP多線程 - Delphi應用程序不能正常工作

一些問題:

1)是否有任何核心的差異,可能會導致線程/進程的兩個操作系統版本之間的不同的表現?

2)我知道這個下一個問題可能看起來很荒謬,但Windows 7是否嘗試拆分/分叉Windows XP上未拆分/分叉的線程?

3)最後,是否有任何已知的FPU處理問題,由於等待狀態處理或寄存器存儲中的操作差異,或者可能是異常屏蔽設置等,可能會導致XP程序在Windows 7上運行時出現問題?

4)任何32位與64位問題都可能在這裏造成麻煩?

5)我使用多個線程,但後臺線程完全受到關鍵部分的保護。我應該關注的任何差異?

- roschler

回答

1

由於Windows XP,微軟已經改變了如何鎖被釋放,使他們不必過渡到FIFO順序下一個等待的線程。有可能這種變化可能會在您的代碼中顯示出在XP下沒有顯示的競爭條件。

一些細節可以在喬·達菲的博客在這裏找到:Anti-convoy locks in Windows Server 2003 SP1 and Windows Vista

(不幸的是,我不能挖了一個實際的MS-託管的文章 - 似乎這應該在某種知識庫文章或某事被提及)

相關問題