我有一个进程外 COM (ATL) 服务器,它已创建为自由线程 (CComMultiThreadModel
)
我对这与调用我的对象的重入有何关系有点困惑,例如,我假设我可以同时从多个客户端调用并同时处理这些请求,但看起来(根据我的日志)每个请求都是序列化的。
我缺少什么,简单地创建一个类作为 MTA 是否意味着它确实如此,或者我还需要做其他什么事情。请注意,我在这里指的是所有进行并发调用的多个进程,而不是单个进程中的线程,因此 COINIT_MULTITHREADED
不是问题。
来自 MTA 的一些 MS 文档的这段代码似乎一切都应该开箱即用:
多个客户端可以同时从不同线程调用支持自由线程的对象。 在自由线程的进程外服务器中,COM 通过 RPC 子系统在服务器进程中创建一个线程池,并且客户端调用(或多个客户端调用)可以由这些线程中的任何一个在任意时间传递。时间
最佳答案
我一问就找到了答案,你需要在stdafx.h
中指定#define _ATL_FREE_THREADED
关于com - 具有 MTA 的进程外 COM 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795320/