0

只是想与那里的 COM/DCOM 专家确认...

我有一个在服务器上运行的 Delphi COM EXE(线程是 Single Apartment),并且同一 EXE 的另一个副本在同一台服务器上启动(一台服务器具有 2 个双核处理器,因此任务管理器显示 4 个单独的图表) 他们会轮流互相等待还是会在不同的内核上运行?

我在某个地方找到了一个帖子,上面写着

“如果两个客户端需要使用同一个对象,他们必须轮流使用。使用这种线程模型,实例数据是安全的,全局数据必须使用临界区或其他形式的序列化来保护。当然,线程的局部变量是在多个呼叫中可靠。”

4

1 回答 1

4

您错过了同一段落中的“来自同一服务器的不同对象”部分。由于您有“单实例化”,因此每个 COM 对象实例都有一个单独的服务器,因此可以并行处理对这些实例的调用,并且 COM 不必提供任何互斥。

这样想吧。线程模型用于提供线程安全——同步访问同一进程的线程之间共享的数据。每个进程有一个对象,因此没有两个线程会尝试访问同一个对象,除非您当然尝试将指向一个对象的指针传递给另一个对象方法调用。

于 2010-09-23T06:18:09.463 回答