7.讀者——寫者問題

讀者——寫者問題

一個數據文件或記錄可被多個進程共享。其中,有些進程要求讀;而另外一些進程要求寫或修改。只要求讀的進程稱爲「Reader進程」,其餘進程稱爲「Writer進程」。容許多個Reader進程同時讀一個共享對象,不容許一個Writer進程和其餘Reader進程或Writer進程同時訪問共享對象。安全

所謂讀者——寫者問題是指保證一個Writer進程必須與其餘進程互斥地訪問共享對象的同步問題。對象

信號量設置

  • 爲解決一個Writer進程和其餘Reader進程互斥,設互斥信號量Wmutex
  • 設置整型變量Readercount表示正在讀的進程數目
  • Readercount是一個可被多個Reader進程訪問的臨界資源,爲它設置互斥信號量Rmutex。
  • 僅當Readercount = 0表示無Reader進程在讀時,Reader進程才須要執行p操做。若p操做成功,Reader進程即可去讀。

使Readercount+1,緣由是:Readercount>0,說明已有Reader進程在安全的讀數據進程

相關文章
相關標籤/搜索