Windows 7与Windows XP多线程 - Delphi应用程序无法正常运行

时间:2010-12-22 04:49:46

标签: multithreading windows-7 compatibility fpu

我在使用Windows XP机器上运行的Delphi Pro 6应用程序时出现问题,因为它在Windows 7上运行。我还没有Windows 7进行测试,而我正在尝试查看Windows 7可能是麻烦的根源。与Windows XP相比,Windows 7处理线程的方式有根本区别吗?我在Windows 7的错误日志中看到事情不按顺序发生,这会导致问题。例如,在Windows 7上运行时,应该已初始化的对象未初始化,但这些对象在需要时在Windows XP上初始化。

有些问题:

1)是否存在可能导致线程/进程在两个操作系统版本之间表现不同的核心差异?

2)我知道下一个问题可能看起来很荒谬,但Windows 7是否会尝试拆分/分叉在Windows XP上未拆分/分叉的线程?

3)最后,由于等待状态处理或寄存器存储的操作差异,或者可能是异常掩码设置等等,在Windows 7上运行会导致XP程序出现问题,FPU处理是否存在任何已知问题? / p>

4)任何32位与64位问题都可能在这里造成麻烦?

5)我确实使用多个线程,但后台线程完全受Critical Sections保护。这里有什么不同我应该关注的吗?

- roschler

1 个答案:

答案 0 :(得分:1)

自Windows XP以来,Microsoft已经更改了锁的释放方式,因此它们不一定按FIFO顺序转换到下一个等待的线程。这种变化可能会在您的代码中显示出一种未在XP下显示的竞争条件。

有些细节可以在Joe Duffy的博客中找到:Anti-convoy locks in Windows Server 2003 SP1 and Windows Vista

(不幸的是,我无法挖掘出一篇真正的MS托管文章 - 似乎应该在某种知识库文章中提及这一点)