我有两个大小为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;
}
}