我有两个信号量,每个大小为10。这两个信号量是互斥的,如下所示:
最初,这两个信号量是空的。如果其中一个信号量有内容,它就会阻塞另一个信号量,使其无法填充内容。只有当原始信号量被清空时,它才会解除对其他信号量的阻塞。而且这个过程还在继续。
在编程意义上,如果一个信号量有内容,另一个信号量就会被内核阻塞。我该如何去实现这样的锁呢?
发布于 2014-02-17 12:36:29
可以像这样定义一个类,并使用额外的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;
}
}https://stackoverflow.com/questions/21820643
复制相似问题