如何解决C++:多线程同步经典案例之生产者消费者问题-创新互联
这篇文章主要介绍如何解决C++:多线程同步经典案例之生产者消费者问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、做网站、
外贸营销网站建设、珲春网络推广、
微信小程序、珲春网络营销、珲春企业策划、珲春品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;
成都创新互联为所有大学生创业者提供
珲春建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两个线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。
要解决该问题,就必须让生产者在缓冲区满时休眠(要么干脆就放弃数据),等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。同样,也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。
本文用一个ItemRepository类表示产品仓库,其中包含一个数组和两个坐标表示的环形队列、一个std::mutex成员、用来保证每次只被一个线程读写操作 (为了保证打印出来的消息是一行一行的,在它空闲的时候也借用的这个互斥量╮(╯▽╰)╭)、两个std::condition_variable表示队列不满和不空的状态,进而保证生产的时候不满,消耗的时候不空。
#pragma once
#include //std::chrono
#include //std::mutex,std::unique_lock,std::lock_guard
#include //std::thread
#include //std::condition_variable
#include //std::cout,std::endl
#include
以上是如何解决C++:多线程同步经典案例之生产者消费者问题的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章名称:如何解决C++:多线程同步经典案例之生产者消费者问题-创新互联
URL分享:
http://dzwzjz.com/article/dejdsg.html