我有一个COM EXE out-of-proc服务器,从其中一个接口公开API。 此API的功能是发布网址。
我的客户端将创建COM服务器的实例并使用新URL调用此API。
每次客户端需要发布URL时,都会创建此COM服务器的实例。
我是否需要在COM服务器中实现一个队列来跟踪客户端发布的所有URL并确保没有丢失任何内容?
我想知道的是,如果每次创建COM对象,都会启动一个新进程吗? 如果是这种情况,我认为我不需要在服务器中实现作业队列。
但是如果只有一个实例保留在内存中,那么客户端发布的作业/ URL可能会丢失。
答案 0 :(得分:1)
COM通常为所有请求启动一个服务器进程,并实例化该进程中的所有对象。如果所有对象(全局变量或静态成员变量)之间共享任何数据,则应该注意同步或使COM组件处于单元线程(STA)。
如果您没有同步并且组件是多线程的(MTA),则实例之间共享的所有数据如果一次由多个线程写入则会受到损坏。