进程外的COM单例

wpf*_*abe 1 c++ com atl out-of-process

我正在处理一个单线程库(不是线程安全的),我想将其包装在COM进程外对象中,以避免其线程不安全.我需要一种行为,其中每个新COM对象在其自己的进程中实例化 - 某种形式的进程外单例.

已经有一段时间了,因为我一直在与硬核COM打交道,所以我不知道如何处理这个问题,或者在没有一些诡计的情况下这是否可行.

Han*_*ant 5

调用CoRegisterClassObject(),并将REGCLS参数设置为REGCLS_SINGLEUSE.谨防成本,过程不是廉价的操作系统对象.

没有理由不能确保封送方法调用是线程安全的,只需调用CoInitializeEx()来请求STA.在进程内服务器中也可以像在进程内服务器中一样工作.如果你只是这样做来解决线程问题,那么肯定有利于进程内STA.需要消息循环.