MTA COM服务器的实现

时间:2014-04-07 12:20:37

标签: winapi com mta

我找不到符合MTA标准的COM的先决条件的任何源代码。我尝试将我的对象的ThreadingModel注册表项从Apartment更改为Both,当辅助线程在访问任何数据之前调用该方法时,它会导致崩溃。

如果STA COM需要消息泵,那么MTA COM对象需要哪种管道代码?

1 个答案:

答案 0 :(得分:4)

我认为MTA没有什么特别之处,除了您需要使用互斥体等同步原语来同步对内部结构的访问。 "Multithreaded Apartments"不能满足您的所有需求吗?

引用文档,重点是我的:

  

由于对对象的调用没有以任何方式进行序列化,因此多线程对象并发性可提供最高性能,并为跨线程,跨进程和跨机器调用充分利用多处理器硬件。但是,这意味着对象的代码必须在其接口实现中提供同步,通常是通过使用同步原语,如事件对象,关键部分,互斥锁或信号量,这些将在后面描述。这个部分。另外,因为对象不控制访问它的线程的生命周期,所以对象中没有特定于线程的状态(在线程本地存储中)。