i我的共享变量设置为0,然后是叉子n进程。这些过程然后忙于等待共享变量成为1.父母负责将此变量设置为1。
我正在研究信号量(sem_open等(,但我的理解是,父母将需要sem_post n次,以便所有按下都可以继续进行。
一种方法是在父进程中创建管道。每个孩子的过程都关闭管道的写入末端,然后调用read
(封锁(。当准备好的过程准备时,它将关闭管道的两端。这使所有孩子都从read
返回,他们现在可以关闭管道的读取末端并继续执行代码。
对于这种情况,我有时会使用原子操作。您可以使用原子标志通知子过程,但它会忙碌地招待。因此,您可以在非常特殊的情况下使用它。
其他方法是创建一个具有pthread_cond_broadcast()
和pthread_cond_timedwait()
之类的事件。所有子过程都在您的病情上等待。准备就绪时,请在父进程上解锁。