使用信号量解决N个进程的关键部分

时间:2013-11-03 18:27:19

标签: process synchronization semaphore critical-section mutual-exclusion

我试图理解信号量的概念,我有以下代码, 最初信号量互斥量初始化为1

 Structure of Pi;
do{
wait(mutex);
Critical Section
signal(mutex);
Remainder section
}
while(1);

考虑N个过程, 上述算法是否为Critcal Section问题提供了一个很好的解决方案?

我的观察是前两个条件,即相互排斥和进步,但不是有限的缓冲区。

如果我知道,请纠正我。

由于

1 个答案:

答案 0 :(得分:2)

如果信号量最大计数为1,则满足相互排除。如果您想要互斥,通常会使用lock

进步并不一定得到满足。这取决于信号量实现是否保证公平性。在某些操作系统上,给定两个高优先级线程和一个优先级较低的线程,低优先级线程可能会被饿死。

无法满足有界缓冲区问题,但是您显示的内容不是producer-consumer程序。