您的位置:首页 > 其它

经典案例:读者写者模型

2020-07-19 04:59 423 查看

经典案例:读者写者模型

读者写者模型

不成熟方案

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)
**********************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: