Concurrency 寻找信号灯联锁的机制?
我有两个信号灯,每个都是10号的。这两个信号量相互排斥,因此: 最初,这两个信号量是空的。如果其中一个信号量包含内容,它将阻塞另一个信号量,使其无法填充内容。只有当原始信号量被清空时,它才会解除对其他信号量的阻塞。这个过程还在继续Concurrency 寻找信号灯联锁的机制?,concurrency,semaphore,Concurrency,Semaphore,我有两个信号灯,每个都是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;
}
}