2014-02-17 59 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; 

     } 

}