1. 程式人生 > >作業系統訊號量通俗理解

作業系統訊號量通俗理解

作業系統訊號量,生產者和消費者問題,哲學家問題,我一直沒有搞明白,最近找實習,又學習一次,下面是訊號量的通俗理解。

P操作(訊號量 S)

S = S-1;
if(s>=0)
    執行緒繼續執行
if(s<0)
    執行緒阻塞

可以把P操作看成排隊,S = S-1,如果S>=0,說明前面還有通道可以通過,不必排隊等候;如果S<0,說明前面已經有人在排隊了,你需要等候;
V操作

S = S+1;
如果S > 0
    該執行緒繼續執行
如果S<=0
    該執行緒去喚醒另一個在該訊號量上等待的執行緒,然後繼續執行

S = S+1後,如果S>0,說明沒有執行緒阻塞在該訊號量上,不需要喚醒其他執行緒操作;如果S<=0,說明有執行緒阻塞在該訊號量上,該執行緒去喚醒其他執行緒後在執行。

後續再寫生產者和消費者,哲學家問題