经典案例:读者写者模型

经典案例:读者写者模型

读者写者模型

不成熟方案

P_Reader

**********************
	P(mutex_Blackboard)
    。。。。
	从黑板读信息
    。。。。
	V(mutex_Blackboard)
**********************

P_Writer

**********************
	P(mutex_Blackboard)
    。。。。
	向黑板写信息
    。。。。
	V(mutex_Blackboard)
**********************

读者优先方案

P_Reader

**********************
	P(mutex_ReaderCount)
	ReaderCount++
	If (ReaderCount==1)
    	P(mutex_Blackboard)
	V(mutex_ReaderCount)
**********************
    。。。。
	从黑板读信息
    。。。。
**********************
	P(mutex_ReaderCount)
	ReaderCount--
	If (ReaderCount==0)
		V(mutex_Blackboard)
	V(mutex_ReaderCount)
**********************

P_Writer

**********************
	P(mutex_Blackboard)
    。。。。
	向黑板写信息
    。。。。
	V(mutex_Blackboard)
**********************

读者写者公平方案

P_Reader

**********************
	P(mutex_Register)

	P(mutex_ReaderCount)
	ReaderCount++
	If (ReaderCount==1)
    	P(mutex_Blackboard)
	V(mutex_ReaderCount)

	V(mutex_Register)
**********************
    。。。。
	从黑板读信息
    。。。。
**********************
	P(mutex_ReaderCount)
	ReaderCount--
	If (ReaderCount==0)
		V(mutex_Blackboard)
	V(mutex_ReaderCount)
**********************

P_Writer

**********************
	P(mutex_Register)
	
	P(mutex_Blackboard)
    。。。。
	向黑板写信息
    。。。。
	V(mutex_Blackboard)
	
	V(mutex_Register)
**********************

写者优先方案

P_Reader

**********************
	P(mutex_enhance)
	
	P(mutex_Register)
	
	P(mutex_ReaderCount)
	ReaderCount++
	If (ReaderCount==1)
    	P(mutex_Blackboard)
	V(mutex_ReaderCount)
	
	V(mutex_Register)
	
	V(mutex_enhance)
**********************
    。。。。
	从黑板读信息
    。。。。
**********************
	P(mutex_ReaderCount)
	ReaderCount--
	If (ReaderCount==0)
		V(mutex_Blackboard)
	V(mutex_ReaderCount)
**********************

P_Writer

**********************
	P(mutex_WriterCount)
	WriterCount++
	If (WriterCount==1)
		P(mutex_Register)
	V(mutex_WriterCount)
**********************
	P(mutex_Blackboard)
	。。。。
	向黑板写信息
    。。。。
	V(mutex_Blackboard)
**********************
	P(mutex_WriterCount)
	WriterCount--
	If (WriterCount==0)
    	V(mutex_Register)
	V(mutex_WriterCount)
**********************

拓展的读者写者模型

读者互助组

变形一:互相帮忙的读者1组和互相帮忙的读者2组, 读者1组和读者2组不会同时读黑板,但同一组中的读者可以同时读黑板,并且会插队(后面)
P_Reader1

**********************
	P(mutex_Reader1Count)
	Reader1Count++
	If (Reader1Count==1)
    	P(mutex_Blackboard)
	V(mutex_Reader1Count)
**********************
    。。。。
	从黑板读信息
    。。。。
**********************
	P(mutex_Reader1Count)
	Reader1Count--
	If (Reader1Count==0)
		V(mutex_Blackboard)
	V(mutex_Reader1Count)
**********************

P_Reader2

**********************
	P(mutex_Reader2Count)
	Reader2Count++
	If (Reader2Count==1)
    	P(mutex_Blackboard)
	V(mutex_Reader2Count)
**********************
    。。。。
	从黑板读信息
    。。。。
**********************
	P(mutex_Reader2Count)
	Reader2Count--
	If (Reader2Count==0)
		V(mutex_Blackboard)
	V(mutex_Reader2Count)
**********************

写者互助组

P_Writer1

**********************
	P(mutex_Writer1Count)
	Writer1Count++
	If (Writer1Count==1)
    	P(mutex_Register)
	V(mutex_Writer1Count)
**********************
	P(mutex_Blackboard)
	。。。。
	向黑板写信息
    。。。。
	V(mutex_Blackboard)
**********************
	P(mutex_Writer1Count)
	Writer1Count--
	If (Writer1Count==0)
    	P(mutex_Register)
	V(mutex_Writer1Count)
**********************

P_Writer2

**********************
	P(mutex_Writer2Count)
	Writer2Count++
	If (Writer2Count==1)
    	P(mutex_Register)
	V(mutex_Writer2Count)
**********************
	P(mutex_Blackboard)
	。。。。
	向黑板写信息
    。。。。
	V(mutex_Blackboard)
**********************
	P(mutex_Writer2Count)
	Writer2Count--
	If (Writer2Count==0)
    	P(mutex_Register)
	V(mutex_Writer2Count)
**********************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值