操作系統-------wait和signal函數原型

這裏的信號量機制採取的是記錄型信號量(如果採取整型信號量會不滿足讓權等待)

//記錄型信號量的定義
typedef struct 
{
	int value;          //剩餘資源數 
	struct procees *L   //等待隊列 
} semaphore; 

 
void wait (semaphore mutex)  
{                       //wait 原語
	mutex.value--; 
	while (mutex.value<0)   //如果臨界資源不夠,就進入block原語 
	    block(mutex.L);           
}

void siganl (semaphore mutex)
{                           //signal原語 
	mutex.value++;           
	if(mutex.value<=0)      //如果還有進程未執行,執行wakeup原語進行喚醒
	 
		wakeup(mutex.L)
}

這兩個函數是兩個原語,原語的意思是,一旦這個函數執行,中間就不會切換進程,知道這一個原語執行結束纔可能出現切換進行。至於這個原語操作是怎樣實現的,這就屬於另外的問題了,這裏不再做闡述。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章