3 代码实例 前一章内容为了简单的说明一些函数的用法, 所列举的例子有些牵强,因此在本章列举了一 些多线程常见的实例 3.1 生产者消费者问题 生产者-消费者模型是经典的多线程并发协作模 型。 生产者用于生产数据,生产一个就往共享数据 区存一个,如果共享数据区已满的话,生产者 就暂停生产,等待消费者的通知后再启动。 消费者用于消费数据,一个一个的从共享数据 区取,如果共享数据区为空的话,消费者就暂 停取数据,等待生产者的通知后再启动。 生产者与消费者不能直接交互,它们之间所共享 的数据使用队列结构来实现: 如下代码着重强调的是简单易懂:includeinclude#includeusing namespace std;//缓冲区存储的数据类型 struct CacheData{ //商品id int id; //商品属性 string data;};queue Q;//缓冲区最大空间 const int MAX_CACHEDATA_LENGTH = 10;//互斥量,生产者之间,消费者之间,生产者和消费者之间,同时都只能一个线程访问缓冲区 mutex m;condition_variable condConsumer;condition_variable condProducer;//全局商品id int ID = 1;//消费者动作 void ConsumerActor(){ unique_lock lockerConsumer(m); cout
THE END
- 本文链接:
- https://zxki.cn/wzym/55766.html
- 版权声明:本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
请登录后发表评论
注册
停留在世界边缘,与之惜别