2014-02-17 57 views
1

我有兩個大小爲10的信號量。兩個信號量是互斥的,例如:尋找信號量互鎖機制?

最初這兩個信號量是空的。如果其中一個信號量具有內容,它將阻止另一個信號量,以使其不能填充內容。只有當原信號量被清空時它才能解除其他信號量的阻塞。並且過程繼續。

從編程意義上講,如果一個信號量有內容,另一個信號量被內核阻塞。我將如何去執行這種鎖定?

+0

信號量作爲資源計數器解釋。你想要這樣一個奇怪的資源,當它存在時,其他資源不能被添加到池中。你最好在沒有信號量的情況下解釋你的任務,只用資源或消息等術語。 –

回答

0

可能是這樣定義一個類,並使用額外的Pairing布爾

class semaphore 

{ 
      int value; 
      Boolean Locked; 
      Boolean Paired; 


     voidsetvalue(int val) 
     { 
      if(Paired==true) 
      { 
      Locked=true 
      } 

      if(locked==false) 
      { 
      value=val; 
      locked=true; 
      } 

     } 
     void release() 
     { 
      Locked=false; 
      value=0; 
      } 
     void releasepair() 
     { 
      Paired=false; 

     } 

}