Concurrency 寻找信号灯联锁的机制?

Concurrency 寻找信号灯联锁的机制?,concurrency,semaphore,Concurrency,Semaphore,我有两个信号灯,每个都是10号的。这两个信号量相互排斥,因此: 最初,这两个信号量是空的。如果其中一个信号量包含内容,它将阻塞另一个信号量,使其无法填充内容。只有当原始信号量被清空时,它才会解除对其他信号量的阻塞。这个过程还在继续 在编程意义上,如果一个信号量包含内容,那么另一个信号量将被内核阻止。我将如何实现这样的锁?可能需要定义这样的类并使用额外的配对布尔值 信号量被解释为一个资源计数器。您需要一个非常奇怪的资源,当它存在时,其他资源无法添加到池中。您最好不用信号量来解释您的任务,只使用诸如

我有两个信号灯,每个都是10号的。这两个信号量相互排斥,因此:

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


在编程意义上,如果一个信号量包含内容,那么另一个信号量将被内核阻止。我将如何实现这样的锁?

可能需要定义这样的类并使用额外的配对布尔值


信号量被解释为一个资源计数器。您需要一个非常奇怪的资源,当它存在时,其他资源无法添加到池中。您最好不用信号量来解释您的任务,只使用诸如资源或消息之类的术语。
 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;

         }

}