Boost Fixed_Managed_Shared_Memory挂起

时间:2014-11-03 14:50:13

标签: boost centos shared-memory semaphore boost-interprocess

我正在尝试使用boost进程间信号量和共享内存来执行相对简单的任务。我想修复两个进程之间共享的数据缓冲区,其中第一个进程是生产者,第二个进程是消费者。缓冲区由3部分组成。第一部分是boost :: interprocess :: semaphore,用于协调生产者/消费者。第二部分只是一个整数,因此消费者知道缓冲区中有多少项。第三部分是实际的项目数组。我有一个非常基本的实现启动,但尝试访问打开共享内存时进程挂起,我不知道为什么。我在使用gcc / g ++ 4.8.2的64位Centos 6.5上执行此操作。我还要注意机器有两个CPU,并且使用进程关联性我确保生产者和消费者都在不同的CPU上运行。

代码位于http://pastie.org/9693362。我遇到了以下问题;使用代码,消费者和生产者都挂在第3行(fixed_managed_shared_memory shm(open_only,“SharedMem”);)。如果我对该行进行注释,那么它们都会在第26行(信号量上的发布/等待)结束(但没有捕获错误)。这让我觉得不知何故内存没有被共享,b / c当我打印出地址时,它们似乎正确形成(如在偏移中似乎是正确的),并且它们在进程之间正确传递。有什么我不知道如何正确设置它?

0 个答案:

没有答案