1. 程式人生 > >管程機制--解決寫者優先問題。

管程機制--解決寫者優先問題。

                                     管程機制--解決寫者優先問題

讀者寫者問題經典的同步機制問題之一。

所謂寫者優先的優先性體現在一批讀者的寫操作上。意思是說當有寫者在執行寫操作,後面有等待寫的寫者,則讀者會一直等待。

也是說這一波寫者會連續進行寫操作,這波寫操作結束之後喚醒讀或者寫都可以。優越性體現在一波上。

來看下實現程式碼:

管程機制:

	moniter reader_writer{
		int write, read;				//管程的區域性變數。
		Condition r,w;					//進行同步機制的條件變數
		Entry start_read() {
			if(write>0) r.wait();        //判斷是否有寫者在寫。
			read++;
			r.signal();
		}
		Entry end_read() {
			read--;
			if(read==0)	w.signal();			//一波讀者讀完才能喚醒寫者.
		}
		Entry start_write() {
			write++;
			if(writer>0||read>0) w.wait();    //等待寫者寫完或者一波讀者讀完。
		}
		Entry end_write() {
			wrier--;
			if(write==0) w.signal();
			r.signal()						//此時喚醒讀者寫者都可以,因為一波寫者已經寫完了。
		}
	}

讀者程序先呼叫start_read--執行寫操作--呼叫end_read

寫者程序同理。