UNIX(多线程):20---生产者消费者实例
生活随笔
收集整理的這篇文章主要介紹了
UNIX(多线程):20---生产者消费者实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文將綜合運用 C++11 中的新的基礎設施(主要是多線程、鎖、條件變量)來闡述一個經典問題——生產者消費者模型,并給出完整的解決方案。
生產者消費者問題是多線程并發中一個非常經典的問題,相信學過操作系統課程的同學都清楚這個問題的根源。本文將就四種情況分析并介紹生產者和消費者問題,它們分別是:單生產者-單消費者模型,單生產者-多消費者模型,多生產者-單消費者模型,多生產者-多消費者模型,我會給出四種情況下的 C++11 并發解決方案,如果文中出現了錯誤或者你對代碼有異議,歡迎交流 ;-)。
單生產者-單消費者模型
顧名思義,單生產者-單消費者模型中只有一個生產者和一個消費者,生產者不停地往產品庫中放入產品,消費者則從產品庫中取走產品,產品庫容積有限制,只能容納一定數目的產品,如果生產者生產產品的速度過快,則需要等待消費者取走產品之后,產品庫不為空才能繼續往產品庫中放置新的產品,相反,如果消費者取走產品的速度過快,則可能面臨產品庫中沒有產品可使用的情況,此時需要等待生產者放入一個產品后,消費者才能繼續工作。C++11實現單生產者單消費者模型的代碼如下:
#include <unistd.h> #include <cstdlib> #include <condition_variable> #include <iostream> #include <mutex> #include <thread>static const int kItemRepositorySize = 10總結
以上是生活随笔為你收集整理的UNIX(多线程):20---生产者消费者实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统(5)-深度推荐模型-AutoR
- 下一篇: 网络游戏服务器架构