一个生产者+具有共享内存的多个消费者模型中的同步

时间:2011-03-12 22:39:14

标签: c++ synchronization shared-memory

我想在Unix中实现一个带有共享内存的单生成器,多用户模型 生产者:将数据框(~char [1024])放入内存段
消费者:将数据存储到自己的私有内存中并进行一些处理

一些相关信息:

  1. 消费者可以错过一些数据框
  2. 消费者是独立的,例如。如果一个消费者只获得数据1,2,4,而另一个消费者获得2,3,5
  3. ,那也没关系
  4. 大约10名消费者将同时运行
  5. 生产者可以比消费者处理的更快地生成数据
  6. 慢/僵尸消费者不应该放慢整个系统的速度
  7. 消费者会在看到相同数据的情况下跳过memcpy
  8. 我已经设置了共享内存,并使用pthread读写锁,但它似乎比使用tcp模型慢

    我的问题:哪种同步最适合这种模式?

1 个答案:

答案 0 :(得分:0)

您确定问题出在同步模型中吗?

我正在考虑其他事情:也许制作人“保留令牌”的时间过长。例如,生成的应该在私有内存中产生1024个字节,并保留共享内存只是为了写下新数据?

确保关键部分尽可能小。