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

C++ 我的COM服务器中是否需要作业队列?,c++,windows,com,interop,C++,Windows,Com,Interop,我有一个COM EXE的proc服务器,从它的一个接口公开了一个API。 此API的功能是发布URL 我的客户端将创建COM服务器的实例,并使用新URL调用此API 每次客户端需要发布URL时,它都会创建此COM服务器的实例 我是否需要在COM服务器中实现一个队列来跟踪客户端发布的所有URL,并确保没有任何内容丢失 我想知道的是,是否每次创建COM对象时,都会启动一个新进程? 如果是这样,我想我不需要在服务器中实现作业队列 但是,如果内存中只剩下一个实例,客户端发布的作业/URL是否可能丢失。C

我有一个COM EXE的proc服务器,从它的一个接口公开了一个API。 此API的功能是发布URL

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

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

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

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


但是,如果内存中只剩下一个实例,客户端发布的作业/URL是否可能丢失。

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


如果您没有同步,并且组件是多线程(MTA)的,那么如果实例之间共享的所有数据一次由多个线程写入,那么这些数据就会被破坏。

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


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

好的,我的COM服务器是单线程的。所以我可以把多个请求放到COM服务器上吗?我还希望COM服务器接受请求并立即返回。看起来我必须在COM服务器中实现第二个线程,负责发布URL。如果组件是STA,则可以发布多个请求,但如果执行了一个请求,则所有后续请求都将被静默挂起,直到第一个请求返回,然后恢复其中一个挂起的请求。这由COM自动完成,以防止共享变量损坏。你可以在里面产生你需要的任何数量的线程,但是你必须注意同步。好的,我的COM服务器是单线程的。所以我可以把多个请求放到COM服务器上吗?我还希望COM服务器接受请求并立即返回。看起来我必须在COM服务器中实现第二个线程,负责发布URL。如果组件是STA,则可以发布多个请求,但如果执行了一个请求,则所有后续请求都将被静默挂起,直到第一个请求返回,然后恢复其中一个挂起的请求。这由COM自动完成,以防止共享变量损坏。您可以在内部生成所需的任意数量的线程,但随后您必须负责同步。