0

我想了解信号灯的概念数处理关键部分,我这下面这段代码, 最初信号灯互斥体被初始化为1个求解使用信号灯

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

考虑数处理, 不上述算法为Critcal Section问题提供了一个很好的解决方案?

我的观察是,前两个条件,即相互排斥和进展得到满足,但不是有界缓冲区。

请纠正我,如果我worng。

感谢

回答

2

互斥被满足,如果信号量最大数为1。通常你会使用一个lock如果你想互斥。

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

有界缓冲区问题没有得到满足,但那么你显示的不是producer-consumer程序。

+0

如果锁和信号灯提供互斥,它们有什么不同? – Faizan

+0

@Faizan:参见http://en.wikipedia.org/wiki/Semaphore_(programming)#Semaphores_vs._mutexes –