提升进程间地图线程安全性

时间:2014-09-24 15:29:19

标签: c++ boost thread-safety

立即查看此链接:

http://www.boost.org/doc/libs/1_56_0/doc/html/interprocess/quick_guide.html#interprocess.quick_guide.qg_interprocess_map

我打算用它在UNIX系统上的进程之间映射内存。我是否必须为多个进程编写/读取实现自己的保护,或者它是否已内置?这方面的文档似乎不清楚。

1 个答案:

答案 0 :(得分:1)

您需要同步对共享内存中容器的所有访问权限。

E.g。 here

  

如前所述,如果无法有效地同步对该内存的访问,则通过内存映射文件或共享内存对象在进程之间共享内存的能力不是很有用。这与线程同步机制发生的问题相同,其中堆内存和全局变量在线程之间共享,但是对这些资源的访问通常需要通过互斥和条件变量进行同步。

另外here

  

使用共享内存,我们可以避免两个数据副本,但我们必须同步对共享内存段的访问。

  

共享内存避免了这种开销,但我们需要同步两个进程