寻找信号量联锁的机制?

时间:2014-02-17 04:17:26

标签: concurrency semaphore

我有两个大小为10的信号量。两个信号量是互斥的,这样:

最初两个信号量都是空的。如果其中一个信号量具有内容,则它会阻止另一个信号量,使其无法填充内容。只有当原始信号量被清空时,它才会解锁其他信号量。这个过程还在继续。

在编程意义上,如果一个信号量具有内容,则另一个信号量被内核阻止。我该如何实施这样的锁?

1 个答案:

答案 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;

         }

}