我有一个父进程,它产生一定数量的子进程。这些子进程做一些工作并通过进程间消息队列向父进程发送带有结果的消息。但是,我还希望子进程等待父进程向他们发送消息已被正确接收和处理的确认,并且仅在收到来自父进程的此类信号后才终止。
现在,代码看起来或多或少是这样的:
parent child
spawn process
wait for message do processing
send message
receive message wait on condvar
save the message
notify the condvar resume execution
wait for child termination terminate
当然,如果父母在孩子甚至开始等待它之前对 condvar 执行了操作,这会导致死锁notify
- 如果发生这种情况,那么父母会等待孩子退出,孩子会等待条件变量。
所以,我的问题是:如何确保孩子总是wait
首先执行,即在父母执行之前notify
?还是我对整个问题的看法完全错误?
先感谢您。