訊號量(三) 經典例題(二)

來源:互聯網
上載者:User

 接上篇的訊號量經典例題,其中包括“讀者寫者”,“過獨木橋”,“公交車”,“四方戀愛”等

 

一. 讀者寫著問題(這裡有很多種情況):

(1)讀者優先

題目描述:有一本書,有多個讀者和寫者,讀寫互斥,寫寫互斥。當多個讀者可以同時讀,即當有讀者在讀這本書時,其他的讀者也可以進來讀,但寫者就不能進來寫。

解答:

訊號量:

w:可寫否:1

nReader:讀者數 :0

mutex:讀者之間的“互斥”,進出的先後順序而已:1

寫者:                讀者

 

P(w)                P(mutex)

寫                    nReader ++ 

V(w)                if(nReader == 1)//第一個讀者

                             P(w)            //堵塞寫者

                       V(mutex)

                       讀

                       P(mutex)

                       nReader - -

                       if(nReader==0)//最後一個讀者

                             V(w)          //喚醒寫者

                        V(mutex)

 

(2)寫者優先

題目描述:有一本書,有多個讀者和寫者,讀寫互斥,寫寫互斥,不同的是只要有寫者等,後續讀者必須等待在寫者後面

w:可寫否:1

nReader:讀者數 :0

mutex:讀者之間的“互斥”,進出的先後順序而已:1

s:用於封鎖後續讀者 :1

寫者:                讀者

 

                       P(s)

P(s)                   P(mutex)

P(w)                nReader ++ 

寫                    if(nReader == 1)//第一個讀者

V(w)                      P(w)            //堵塞寫者

V(s)                  V(mutex)

                       V(s)

                       讀

                         P(mutex)

                       nReader - -

                       if(nReader==0)//最後一個讀者

                             V(w)          //喚醒寫者

                         V(mutex)

 

 

二.過獨木橋

 

 

題目描述:

橋單向通行,分別從西到東和從東到西

解答:

訊號量:

s : 表示橋可用。 :1

nw : 東向西人數 :0

ne :  西向東人數 : 0

m1: 互斥對nw的修改 :1

m2: 互斥對ne的修改  :1

 

ToWest                                                   ToEast

 

P(m1)                                                      P(m2)

nw++                                                      ne ++

if(1==nw)                                                if(1==ne)

    P(s)                                                           P(s) 

V(m1)                                                      V(m2)

cross the bridge  to west                        cross the bridge to east        

P(m1)                                                      P(m2)

nw--                                                        ne - -

if(0==nw)                                                if(0==ne)

    V(s)                                                           V(s)

V(m1)                                                      V(m2)

 

 

三.四方戀愛

題目描述:有兩男兩女,男士送女士玫瑰,女士送男士手錶。一一對應,每個只能串連一個

解答:

(1)老師答案

訊號量:

m1:互斥女士之間的收花送表行為:1

m2:互斥男士之間的收表送花行為:1

s1:有花。 0

s2:有表。 0

 

女士                                     男士

 

P(s1)                                  P(m2)

P(m1)                                 送花

收花                                    V(s1)

送表                                    P(s2)

V(s2)                                  手錶

V(m1)                                 V(m2)

戀愛                                    戀愛

 

(2)自己的答案

四個分別是李四(男),張三(男),嘻嘻(女),哈哈(女)

訊號量:

g1:是否有表收 :0

g2:是否有玫瑰收:0

s1:是否可以送表:1

s2:是否可以送玫瑰:1

note:這裡只運行一次的,不能夠迴圈

李四                               張三                               嘻嘻                               哈哈

P(s2)                             P(s2)                            P(s1)                             P(s1)     

sendRose()                   sendRose                     sendWatch                   sendWath

V(g2)                             V(g2)                            V(g1)                            V(g1)

P(g1)                             P(g1)                            P(g2)                            P(g2)

getWatch                      getWatch                     getRose                        getRose

V(s1)                             V(s1)                            V(s2)                             V(s2)

 

ps:這個解答我邏輯上想了一下,沒有錯誤,但我一個同學說實際上傳機器上跑時好像有問題,自己就沒想明白,請高手指教了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.