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

C++ 具有共享内存的一个生产者+多个消费者模型中的同步,c++,synchronization,shared-memory,C++,Synchronization,Shared Memory,我想在Unix中使用共享内存实现一个生产者、多消费者模型 生产者:将数据帧~char[1024]放入内存段 使用者:memcpy将数据放入自己的私有内存并进行一些处理 一些相关信息: 消费者可以错过一些数据帧 消费者是独立的,例如,如果一个消费者只获得数据1,2,4,而另一个消费者获得数据2,3,5,这没关系 大约10个消费者将同时运行 生产者可以比消费者更快地生成数据 慢/僵尸消费者不应使整个系统慢下来 如果消费者看到相同的数据,它将跳过memcpy 我已经设置了共享内存,并使用了pthrea

我想在Unix中使用共享内存实现一个生产者、多消费者模型 生产者:将数据帧~char[1024]放入内存段 使用者:memcpy将数据放入自己的私有内存并进行一些处理

一些相关信息:

消费者可以错过一些数据帧 消费者是独立的,例如,如果一个消费者只获得数据1,2,4,而另一个消费者获得数据2,3,5,这没关系 大约10个消费者将同时运行 生产者可以比消费者更快地生成数据 慢/僵尸消费者不应使整个系统慢下来 如果消费者看到相同的数据,它将跳过memcpy 我已经设置了共享内存,并使用了pthread读写锁,但它似乎比使用tcp模型慢


我的问题:什么样的同步最适合这种模型?

您确定问题出在所使用的同步模型中吗

我在想另外一件事:也许制作人把代币保存得太久了。例如,生成的应该在私有内存中生成1024个字节,并保留共享内存以记录新数据


确保关键部分尽可能小。

错过一些数据帧是什么意思?一个消费者得到1,2,4,另一个消费者得到2,3,5,这是怎么回事?你不介意2被处理两次吗?我不认为这是一个同步问题。是的,但解决方案很少且简单。这里更大的问题是日程安排。我不确定您是否可以使用.NET库,但您需要类似于和的东西