【问题标题】:COM Multi-threaded architecture on multi core machineCOM 多核机器上的多线程架构
【发布时间】:2011-03-09 03:24:41
【问题描述】:

如果你有一个 COM 进程外服务器和一个 COM 客户端,COM 如何确保在多核机器上保持同步,并且相互依赖,如果你'在多核架构上重新运行它?

【问题讨论】:

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

标签: com multicore


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    如果您的数据可能在客户端不知情的情况下在服务器端发生变化,那么这对于单 CPU/内核也是一个问题 - 您需要通过轮询(错误)或客户端通知界面(更好)来解决这个问题.

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 2012-02-07
      • 2010-12-16
      • 2014-02-05
      • 2010-09-05
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      相关资源
      最近更新 更多