生產者消費者問題

問題描述:併發

生產者在生產產品,這些產品將提供給若干個消費者去消費,爲了使生產者和消費者能併發執行,在二者之間設置一個具備多個緩衝區的緩衝池,生產者將它 生產的產品放入一個緩衝區中,消費者能夠從緩衝區中取走產品進行消費,顯然生產者和消費者之間必須保持同步,即不容許消費者到一個空的緩衝區中取產品,也 不容許生產者向一個已經放入產品的緩衝區中再次投放產品。線程

條件變量解決方案:隊列

  • 基於隊列構建一個緩衝區,生產者在隊尾填充,消費者在隊頭獲取。隊列緩衝區做爲多個線程的共享資源。
  • 因爲多個消費者和生產者線程能夠併發訪問緩衝區,須要互斥鎖來控制對緩衝區的互斥訪問。
  • 隊列空時消費者線程須要等到隊列中存在資源、隊列滿時生產者線程須要等到隊列中有資源被消費。經過使用條件變量來實現線程的阻塞、通知以達到生產、消費線程的同步。
相關文章
相關標籤/搜索