0

我一直在努力解决同步问题。我有一个进程 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()并无限期地等待信号。我不知道如何防止这种僵局。

有没有其他方法可以实现这一目标?

4

1 回答 1

0

考虑使用信号量作为 IPC 同步,
任何进程想要发送信号都必须锁定信号量,
并在收到 A 的返回后解锁信号量,以便下一个进程继续进行。

于 2013-04-17T11:00:32.520 回答