讀者與寫者、生產者與消費者

1、讀者寫者

寫者:寫數據

讀者:僅僅是讀數據,不存在取走數據

寫者與寫者關係:互斥

讀者與讀者關係:沒有關係

寫者與讀者關係:同步、互斥


解決方法:

1)讀者優先:讀者正在讀,寫者不能終止讀者,直到讀者讀完,寫者才能寫入

2)寫者優先:寫者正在寫,讀者不能終止寫者,直到寫者寫完,讀者才能寫入


2、生產者消費者

生產者:產生數據

消費者:取走數據

生產者與生產者:互斥關係

消費者與消費者:互斥關係

生產者與消費者:互斥、同步關係


生產者的主要作用是生成一定量的數據放到緩衝區中,然後重複此過程。與此同時,消費者也在緩衝區消耗這些數據。該問題的關鍵就是要保證生產者不會在緩衝區滿時加入數據,消費者也不會在緩衝區中空時消耗數據。

要解決該問題,就必須讓生產者在緩衝區滿時休眠,等到下次消費者消耗緩衝區中的數據的時候,生產者才能被喚醒,開始往緩衝區添加數據。同樣, 也可以讓消費者在緩衝區空時進入休眠,等到生產者往緩衝區添加數據之後,再喚醒消費者。


3、區別

1)數據一直都存在,不存在有空位才能寫,有數據才能讀的問題,寫者寫可以覆蓋之前的值,讀者不會消費數據,數據不會消失。

2)允許多個讀者同時併發訪問,而消費者卻要互斥,寫者不僅要和寫者之間互斥,還要與讀者也互斥,對於生產者/消費者只需與自身互斥。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章