管程机制--解决写者优先问题。

                                     管程机制--解决写者优先问题

读者写者问题经典的同步机制问题之一。

所谓写者优先的优先性体现在一批读者的写操作上。意思是说当有写者在执行写操作,后面有等待写的写者,则读者会一直等待。

也是说这一波写者会连续进行写操作,这波写操作结束之后唤醒读或者写都可以。优越性体现在一波上。

来看下实现代码:

管程机制:

	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

写者进程同理。

猜你喜欢

转载自blog.csdn.net/qq_43279637/article/details/83443886
今日推荐