多核机器上的COM多线程体系结构

多核机器上的COM多线程体系结构,com,multicore,Com,Multicore,COM如何确保在多核机器上,如果您有一个COM out-proc服务器和一个COM客户端,并且彼此依赖,那么它将保持同步,如果您在多核体系结构上运行它,那么事情不会变得混乱?由于您的COM服务器在proc之外,客户端和服务器的线程在不同的进程中运行。Windows中的进程间同步机制跨内核或处理器工作,因此COM子系统将已经为您处理任何多核/处理器问题 如果服务器端的数据可能会在客户端不知道的情况下发生更改,这也是单CPU/核心的问题-您需要通过轮询(错误)或客户端通知接口(更好)来解决此问题。在

COM如何确保在多核机器上,如果您有一个COM out-proc服务器和一个COM客户端,并且彼此依赖,那么它将保持同步,如果您在多核体系结构上运行它,那么事情不会变得混乱?

由于您的COM服务器在proc之外,客户端和服务器的线程在不同的进程中运行。Windows中的进程间同步机制跨内核或处理器工作,因此COM子系统将已经为您处理任何多核/处理器问题


如果服务器端的数据可能会在客户端不知道的情况下发生更改,这也是单CPU/核心的问题-您需要通过轮询(错误)或客户端通知接口(更好)来解决此问题。

在您的评论中,您会问如果COM客户端在一个线程上运行,而COM服务器在另一个线程上运行,会发生什么情况。这两个线程驻留在不同的进程中(因为服务器是outproc)


如果您的客户端使用out-proc-COM服务器,则COM子系统将使用RPC(本地RPC)与服务器通信。这对于客户端来说是透明的——客户端调用一个方法,RPC准备一个包含所有参数的字符串,阻塞客户端线程,将调用传递给服务器,服务器处理调用并返回给客户端。没有并发访问,因此额外的同步没有问题-所有同步都是自动完成的。

您具体会遇到什么问题?如果CPU A运行COM客户端的线程A,CPU B运行COM服务器的线程A,现在如果它们相互依赖,而且COM服务器已经更新了客户端正在使用的内容的值,客户端将使用错误的数据。