我试图理解信号量的概念,我有以下代码, 最初信号量互斥量初始化为1
Structure of Pi;
do{
wait(mutex);
Critical Section
signal(mutex);
Remainder section
}
while(1);
考虑N个过程, 上述算法是否为Critcal Section问题提供了一个很好的解决方案?
我的观察是前两个条件,即相互排斥和进步,但不是有限的缓冲区。
如果我知道,请纠正我。
由于
答案 0 :(得分:2)
如果信号量最大计数为1,则满足相互排除。如果您想要互斥,通常会使用lock。
进步并不一定得到满足。这取决于信号量实现是否保证公平性。在某些操作系统上,给定两个高优先级线程和一个优先级较低的线程,低优先级线程可能会被饿死。
无法满足有界缓冲区问题,但是您显示的内容不是producer-consumer程序。