启动时C ++协调流程?

时间:2013-07-09 18:03:47

标签: c++ process launch

使用C ++我打算让producer进程编写数据vector,然后编写几个consumer进程来读取该数据。将存在共享内存段(Boost :: Interprocess),其中将存储数据vector。问题是:我无法控制第三方应用程序启动进程的顺序,consumer可能会在producer生成任何数据之前启动。有哪些机制可用于协调过程,以便可以命令consumer进程耐心等待,直到producer信号表示数据准备就绪;无论流程的启动顺序是什么?

2 个答案:

答案 0 :(得分:0)

我猜命名信号量是个不错的选择。您的生产者和消费者应用程序应该同意(硬编码)信号量的名称,例如/ tmp / mySem,只有生产者必须创建和发布信号量,而消费者应该等待信号量存在和状态。

答案 1 :(得分:0)

如果创建共享内存是生产者进程的责任,那么您可以使用boost barrier来同步启动。

您可以创建一个用于创建共享内存的屏障,可能需要部署一些作业。在达到这个障碍后,消费者流程可以继续处理它们。

您可以在此page

查看增强屏障的详细信息