使用 C++ 我计划让一个producer
进程写入数据vector
,然后有几个consumer
进程读取该数据。将有一个共享内存段(Boost::Interprocess)vector
存储数据。问题是:我无法控制第三方应用程序启动进程的顺序,可能是在生成任何数据consumer
之前启动。producer
有哪些机制可用于协调进程,以便consumer
可以命令进程耐心等待,直到producer
数据准备就绪的信号;无论进程启动的顺序如何?
问问题
85 次
2 回答
0
我想命名信号量是一个不错的选择。您的生产者和消费者应用程序应该同意(硬编码)信号量的名称,例如 /tmp/mySem 并且只有生产者必须创建和发布信号量,而消费者应该等待信号量的存在和状态。
于 2013-07-09T18:58:04.923 回答
0
如果创建共享内存是生产者进程的责任,那么您可以使用 boost barrier 来同步启动。
您可以创建一个屏障来创建共享内存,也许可以部署一些作业。达到这个障碍后,消费者进程可以继续处理它们。
您可以在此页面查看提升屏障的详细信息
于 2013-07-10T07:36:49.387 回答