2010-12-22 123 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-托管的文章 - 似乎这应该在某种知识库文章或某事被提及)

相关问题