讀者寫者模型

來源:互聯網
上載者:User

標籤:多線程   讀者   優先順序   程式   模型   

編寫多線程時有些共用的資料需要修改的機會少而讀的機會多,在讀的過程中消耗的時間較長,因在讀的時候先要尋找,因此加入讀寫鎖對代碼的訪問較快,還很好的對代碼塊進行了加鎖。讀寫鎖實際是基於自旋鎖的(當線程訪問某資源條件不滿足時,不掛起該線程,而是讓它一直重複rwlock_trylock,適用於在鎖中待得時間較短)

它也有三種關係(讀者與讀者之間無關係,寫著與寫著之間互斥,讀者與寫著之間同步、互斥),兩個角色(讀者、寫著),一個場所

需要考慮讀者與寫著之間的優先順序,避免讀者一直讀,而寫著一直阻塞等待,沒機會修改,當讀者到某個程度時適當提高寫著優先順序,不使寫著持續等待。

例:讀者與寫著同時對同一個全域變數進行讀寫操作。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7F/6D/wKiom1cd__ugTwIXAABdwwbQQL0722.png" style="float:none;" title="讀寫.png" alt="wKiom1cd__ugTwIXAABdwwbQQL0722.png" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7F/6D/wKiom1cd__vRdFzrAAAkAEPN1Vs582.png" style="float:none;" title="讀結果.png" alt="wKiom1cd__vRdFzrAAAkAEPN1Vs582.png" />

總結:如果僅給共用資料快或代碼塊加鎖時,一般情況下我們讀的次數比較多,而寫的比較少,這樣會極大地降低程式的效率,而讀寫鎖(多讀少寫及訪問時間高)很好的解決了這種問題。

讀者寫者模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.