簡體   English   中英

如何防止死鎖?

[英]How do I prevent a deadlock?

我一直在努力解決同步問題。 我有一個進程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()並無限期地等待信號。 我不知道如何防止這種僵局。

還有其他方法可以做到這一點嗎?

考慮使用信號量作為IPC同步,
任何想要發送信號的過程都必須鎖定信號量,
並在收到A的退貨后,將其解鎖,以便繼續進行下一步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM