【发布时间】:2010-05-31 16:39:32
【问题描述】:
我的应用程序在处理多处理器系统时遇到了一些问题。这不是我特别喜欢修改的应用程序,如果可能的话,我想避免它。但是,如果必须,我不会修改代码。该应用程序是用 VBA 编写的(因此我倾向于避免接触它)。
我们注意到,如果我们使用任务管理器将处理器亲和性设置为单个处理器,应用程序似乎运行得相当顺利,只有在未设置处理器亲和性时才会表现出不稳定。
我知道我可以使用 .NET 指定任务的处理器亲和性,因此,我有可能编写一个外壳应用程序,该应用程序可用于运行具有指定处理器亲和性的遗留应用程序,有人有吗?有这方面的经验,并且可以提出一些关于我可能会遇到这种方法的头痛的想法?
另一个问题是:实际上是否可以修改核心 VBA 产品来处理它自己的处理器亲和性?我从来不需要在我的任何应用程序中处理这个问题,所以这(在这个时间点)完全超出了我的专业领域。
提前致谢
【问题讨论】:
-
我很想知道您在未设置处理器关联时遇到的问题。这些问题是如何表现出来的?
-
@Gary McGill:我们看到的问题(应用程序是为 Access 2003 编写的 - 在 Access 2007/2010 中不起作用)是应用程序崩溃和一般 Access 不稳定。该应用程序最初是在单 CPU/单核机器上编写的,我们现在在更换时遇到了问题。该应用程序在多 CPU 和多核机器上存在各种不稳定性,但在旧机器上仍然可以正常工作。当我们设置处理器亲和性时,不稳定性不再是问题。该应用程序正在重写,但在完成之前,我们陷入了困境。
-
您是否在 VBA 应用程序中使用多个线程?如果将多线程应用程序限制在单个处理器上可以提高性能,这通常表明存在错误缓存问题