在多线程环境中同步共享内存

时间:2011-07-29 06:12:31

标签: c++ multithreading thread-safety

我在C ++项目中实现了一个观察者模式。

  1. 我的主题是一个XML文件阅读器,它读取标签并发布其值。
  2. 我有一些“处理对象”是我的观察者。他们检查当前已被读取的标签,如果他们已经将标签附加到标签,他们将处理它,否则忽略它。
  3. 我有一堆内存,标签及其值被转储到这些内存中。
  4. 我的问题是,我该如何同步内存操作? 当我的XML阅读器想要发布一些标记/值时,它应该获得一个未使用的内存块并“锁定”它以使其无法进行编辑。一旦所有“处理对象”都与内存完成,它们应该能够“解锁”以供进一步使用。

    我怎样才能做到这一点?请帮忙。

2 个答案:

答案 0 :(得分:4)

你签出了boost shared memory吗?它有各种synchronization mechanisms和例子......

如果要将互斥锁放在共享内存块本身中,则进程间库中概述的同步机制特别有用。

答案 1 :(得分:1)

我认为你的主要任务不是学习/开发同步机制。

您应该重用现有的可用组件,并且有很多组件。这非常好http://www.rabbitmq.com/getstarted.html

它将支持多种(包括分布式/网络)模型。虽然可能有初始学习期,但一旦集成,您可以继续使用它进行功能扩展,而不是专注于解决问题。