我一直在努力解决同步问题。我有一个进程 A,这是主要进程,还有 3 个 B 类进程。这些进程必须向 A 发出信号并等待响应。
A 正在等待所有 3 个信号。当它们都到达时,A 完成它的工作并向所有 B 进程发出信号,以便它们可以继续工作。
A:
if(/*all signals received*/) {
//do my job
//signal all Bs
}
B:
//some code
signal(A);
pause(); //wait for response
//Do other stuff
当 B 调用signal(A)
时,A 完成他的工作,给 B 发回信号,然后再次安排 B,导致 B 调用pause()
并无限期地等待信号。我不知道如何防止这种僵局。
有没有其他方法可以实现这一目标?