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 –