我的COM服务器中是否需要作业队列?

时间:2009-05-14 04:59:41

标签: c++ windows com interop

我有一个COM EXE out-of-proc服务器,从其中一个接口公开API。 此API的功能是发布网址。

我的客户端将创建COM服务器的实例并使用新URL调用此API。

每次客户端需要发布URL时,都会创建此COM服务器的实例。

我是否需要在COM服务器中实现一个队列来跟踪客户端发布的所有URL并确保没有丢失任何内容?

我想知道的是,如果每次创建COM对象,都会启动一个新进程吗? 如果是这种情况,我认为我不需要在服务器中实现作业队列。

但是如果只有一个实例保留在内存中,那么客户端发布的作业/ URL可能会丢失。

1 个答案:

答案 0 :(得分:1)

COM通常为所有请求启动一个服务器进程,并实例化该进程中的所有对象。如果所有对象(全局变量或静态成员变量)之间共享任何数据,则应该注意同步或使COM组件处于单元线程(STA)。

如果您没有同步并且组件是多线程的(MTA),则实例之间共享的所有数据如果一次由多个线程写入则会受到损坏。