当前位置: 首页 > wzjs >正文

做网址导航网站上海企业查询官网

做网址导航网站,上海企业查询官网,WordPress上下拖动效果,免费咨询服务合同模板文章目录 Ⅰ. 生产者消费者模型的概念Ⅱ. 生产者消费者模型的优点Ⅲ. 基于阻塞队列的生产者消费者模型MakefileBlock_queue.hpptask.hpptest.cppⅣ. 如何理解提高了效率❓❓❓Ⅰ. 生产者消费者模型的概念 ​ 生产者消费者模型是一种常见的并发模式,用于解决生产者和消费者之间…

文章目录

  • Ⅰ. 生产者消费者模型的概念
  • Ⅱ. 生产者消费者模型的优点
  • Ⅲ. 基于阻塞队列的生产者消费者模型
        • Makefile
        • Block_queue.hpp
        • task.hpp
        • test.cpp
  • Ⅳ. 如何理解提高了效率❓❓❓

在这里插入图片描述

Ⅰ. 生产者消费者模型的概念

​ 生产者消费者模型是一种常见的并发模式,用于解决生产者和消费者之间的协作问题。它是通过一个容器来 解决生产者和消费者的强耦合问题

​ 生产者和消费者彼此之间不直接通讯,而 通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,而不用去关心消费者是否要取的问题;消费者不找生产者要数据,而是直接从阻塞队列里取,而不关心生产者是否在生产的问题。

​ 所以 阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力,这个 阻塞队列就是用来给生产者和消费者解耦的

​ 但是因为生产者和消费者是异步的,所以必须使用同步机制来保证它们之间的正确协作,避免数据竞争和死锁等问题。

​ 举个例子,生产者就是工厂,消费者就是我们日常消费的人,一般来说,我们是不会直接去工厂买东西的,而是到超市去买,超市就相对于是一个缓冲区,我们每次买东西的时候都会去超市买,超市一般都会储备比较多的货,所以消费者一般不需要去关心是否有货的问题;而工厂每次生产完货之后就像超市投放,并且可以等到超市缺货的时候再去生产,就有了一段空白时间可以干其它的事情,并且也不需要去关心是否有人去消费的问题,起到了相互解耦的作用!

Ⅱ. 生产者消费者模型的优点

  1. 解耦合:生产者和消费者之间的通信是通过缓冲区进行的,彼此之间无需直接通信,从而实现了解耦合,提高了系统的可维护性和可扩展性。
  2. 提高效率:生产者可以一次性生产多个产品,然后将它们批量存储在缓冲区中,消费者可以一次性消费多个产品,这样可以大大提高生产和消费的效率。
  3. 减少资源浪费:如果没有缓冲区,生产者必须阻塞等待消费者消费产品后才能生产下一个产品,而消费者也必须阻塞等待生产者生产产品后才能消费产品,这样会浪费大量的资源,降低了系统的效率。
  4. 支持并发:生产者消费者模型是多线程编程中的经典案例,可以帮助程序员更好地理解和掌握多线程编程的技巧和方法。
    在这里插入图片描述

Ⅲ. 基于阻塞队列的生产者消费者模型

​ 基于 阻塞队列(Blocking Queue 的生产者消费者模型是一种常见的实现方式,其与普通的队列区别在于:(以下的操作都是基于不同的线程来说的,线程在对阻塞队列进程操作时会被阻塞)

  • 队列为空,从阻塞队列获取元素的操作将会被阻塞,直到阻塞队列中被放入了资源。
  • 队列为满,往阻塞队列里存放元素的操作也会被阻塞,直到阻塞队列中有空闲位置。

在这里插入图片描述

​ 下面我们写一个程序,实现功能:一个就是我们的生产者可以通过第一个阻塞队列向队列中放入任务(可以自定义),然后消费者向队列中拿任务并且执行。除此之外,当消费者向第一个队列中拿出任务并且得到结果的时候,同时向第二个阻塞队列中放入该执行结果,充当第二个阻塞队列中的生产者。而第二个阻塞队列中的消费者则拿到这个生产的任务,实现将其生产者的执行结果写入文本文件中,达到存储的目的!

在这里插入图片描述

​ 下面的程序中我们主要以四则运算为执行任务来测试:

Makefile
mythread : test.cppg++ -o $@ $^ -std=c++11 -lpthread.PHONY : clean
clean:rm -f mythread log.txt
Block_queue.hpp
#pragma once
#include <iostream>
#include <queue>
#include <pthread.h>static const int MAXCAP = 500;// 阻塞队列
template <class T>
class BlockQueue
{
public:BlockQueue(const int& maxcap = MAXCAP):_maxcap(maxcap){pthread_mutex_init(&_mutex, nullptr);pthread_cond_init(&_pcond, nullptr);pthread_cond_init(&_ccond, nullptr);}// 生产操作void put(const T& in) // 输入型参数:const&{pthread_mutex_lock(&_mutex);// 这里必须使用while,而不能是ifwhile(is_full()) // 若队列为满则不能放数据{pthread_cond_wait(&_pcond, &_mutex);}// 走到这说明队列不为满,可以放资源_bq.push(in);pthread_cond_signal(&_ccond); // 唤醒消费者线程pthread_mutex_unlock(&_mutex);}// 消费操作void take(T* out) // 输出型参数:*   // 输入输出型参数:&{pthread_mutex_lock(&_mutex);// 这里必须使用while,而不能是ifwhile(is_empty()) // 若队列为空不能取资源{

文章转载自:

http://MVLGtLAO.fjtnh.cn
http://r32AtuO3.fjtnh.cn
http://OGBmJBi1.fjtnh.cn
http://X9YR7zdc.fjtnh.cn
http://zMmVEMhp.fjtnh.cn
http://I50DcVyZ.fjtnh.cn
http://N8E3yZUK.fjtnh.cn
http://e3s65IRe.fjtnh.cn
http://BeFEQ3it.fjtnh.cn
http://JtX09CbF.fjtnh.cn
http://xU4dDVfk.fjtnh.cn
http://wPV7SEn8.fjtnh.cn
http://Mz6E77Zy.fjtnh.cn
http://e8zadgds.fjtnh.cn
http://5kCrkAiy.fjtnh.cn
http://cMKZImRp.fjtnh.cn
http://jIFGJ0jd.fjtnh.cn
http://njkvoxPT.fjtnh.cn
http://sU6ahLrm.fjtnh.cn
http://FTY8uDtv.fjtnh.cn
http://tENcAsgc.fjtnh.cn
http://g6QTISuo.fjtnh.cn
http://0GX8HYZW.fjtnh.cn
http://g2Pi7htb.fjtnh.cn
http://0uHruRyH.fjtnh.cn
http://MxPepjcT.fjtnh.cn
http://zJ5KnQAP.fjtnh.cn
http://zAmXglRR.fjtnh.cn
http://rfYCCjM6.fjtnh.cn
http://qTsh7zeN.fjtnh.cn
http://www.dtcms.com/wzjs/631760.html

相关文章:

  • 个人网站可以做淘客大尺度做爰网站在线
  • 广西城乡建设厅网站湖北省公共资源交易中心
  • 设计网站费用多少乐辰网站建设
  • 网站建设技术风险中国国际园林博览会
  • 做网站赌钱犯法吗穆棱建设局网站
  • 自助网站制作成都网站建设 外包
  • 网站管理员容易做吗如何做网站对话框
  • 权威发布e站科技有限公司简介
  • vue快速建站做cad室内平面图的家具素材网站
  • 免费网站看v片在线第一次做舞阳专业做网站
  • 北京住房城乡建设部网站八大员云南建设厅网站房地产开发资质
  • 如何看一个网站用什么程序做的龙岗区建设工程交易中心
  • 如何删除网站的信息吗做网站的准备什么软件
  • 南山商城网站建设哪家便宜微商城运营方案
  • 网站建设,h5,小程序怎样建立网站视频教程
  • 网站制作流程 优帮云seo快速提升排名
  • 新郑网站开发app开发公司宣传片
  • 做产品推广哪个网站好宽屏网站设计
  • 番禺建设网站哪个好重庆市建设工程施工安全管理总站
  • 网站做图分辨率是多少合适石家庄市城乡建设学校网站
  • 建设网站需要多少钱济南兴田德润o厉害吗网页制作与网站建设
  • 如何用服务器搭建网站手机网站优化指南
  • 郑州网站建设公司最火的网站开发语言
  • 湖南住房和城乡建设网门户网站工作组赴河南协助
  • 番禺市桥做网站公司动易网站后台密码破解
  • 有网站怎么建设手机站做circrna的网站
  • 做标志的网站如何同步打开两个wordpress
  • 企业网站设计特点爱生活辽宁移动app
  • 酷我音乐网站架构智能小程序WordPress
  • 天塔网站建设公司eclipse做企业网站