【问题标题】:Shared memory stuff in cpp dllcpp dll中的共享内存内容
【发布时间】:2014-11-14 11:41:25
【问题描述】:

Soft MetaTrader 5。它是交易终端。它的“指标”窗口是类似 cpp 的小程序。他们可以加载纯 cpp dll。每个“指标”都在单独的线程中工作。 我需要创建可以从每个“指标”访问的共享内存内容。此外,对于共享内存,可以在每个指标中加载它必须是特定的 dll。

我找到了有关 boost 进程间的信息。

我是 boost 和多线程的新手。 所以我想知道我是对的吗?

  1. 创建具有共享内存功能的 dll 和从指示器访问它的接口。
  2. 在几个“指标”中加载 dll。
  3. 从几个“指标”实时访问它?

您还能建议其他方法吗?

【问题讨论】:

    标签: c++ boost shared-memory


    【解决方案1】:

    共享库中的全局变量不会在库用户进程之间共享。该数据段是为每个加载库的进程创建的,实际上只有只读代码段是共享的。

    你需要使用共享内存的库,比如boost::interprocess shared_memory_object或POSIX Shared Memory,或者Qt的QSharedMemory。但是,这是在您需要进程间通信的情况下。

    除了使用互斥锁来防止数据争用之外,您不需要做任何特别的事情来让多个线程在同一个进程中访问共享内存。

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      相关资源
      最近更新 更多