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

网站建设中的pv指的是啥个人网站可以做电商么

网站建设中的pv指的是啥,个人网站可以做电商么,seo管理系统创作,什么网站可以做外链文章目录 前言一、 BlockQueue.hpp#xff08;阻塞队列#xff09;二、main.cpp 前言 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯#xff0c;而通过阻塞队列来进行通讯#xff0c;所以生产者生产完数据之后不用… 文章目录 前言一、 BlockQueue.hpp阻塞队列二、main.cpp 前言 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯而通过阻塞队列来进行通讯所以生产者生产完数据之后不用等待消费者处理直接扔给阻塞队列消费者不找生产者要数据而是直接从阻塞队列里取阻塞队列就相当于一个缓冲区平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。 一、 BlockQueue.hpp阻塞队列 在多线程编程中阻塞队列(Blocking Queue)是一种常用于实现生产者和消费者模型的数据结构。其与普通的队列区别在于当队列为空时从队列获取元素的操作将会被阻塞直到队列中被放入了元素当队列满时往队列里存放元素的操作也会被阻塞直到有元素被从队列中取出(以上的操作都是基于不同的线程来说的线程在对阻塞队列进程操作时会被阻塞) 类似之前我们学过的管道 问我们怎么知道我们要让一个线程去休眠了那 答一定是临界资源不就绪没错临界资源也是有状态的 问你怎么知道临界资源是就绪还是不就绪的你判断出来的判断是访问临界资源吗 答必须是的也就是判断必须在加锁之后 判断当前线程是否要进入等待需要判断是否满足临界资源的条件 而我们判断临界资源本质是在访问临界区所有这个操作只能在加锁之后 #pragma once #includeiostream #includequeue #includepthread.husing namespace std;templateclass Tclass BlockQueue{const static int defaultnum20;public: BlockQueue(int maxcapdefaultnum):maxcap_(maxcap) {pthread_mutex_init(mutex_,nullptr);pthread_cond_init(c_cond_,nullptr);pthread_cond_init(p_cond_,nullptr);low_water_ maxcap_/3;//消费到低于到这个数字时就唤醒生产者生产high_water_ (maxcap_*2)/3;//生产到这个数字时就唤醒消费者过来消费 }void push(const Tin){pthread_mutex_lock(mutex_);// 我们怎么知道我们要让一个线程去休眠了那一定是临界资源不就绪没错临界资源也是有状态的// 你怎么知道临界资源是就绪还是不就绪的你判断出来的判断是访问临界资源吗必须是的也就是判断必须在加锁之后if(q.size()maxcap_){//满了则生产者就去休眠pthread_cond_wait(p_cond_,mutex_);// pthread_cond_wait让线程等待的时候会自动释放锁}// 1. 队列没满 2.被唤醒 q.push(in);// 你想生产就直接能生产吗不一定。你得先确保生产条件满足if(q .size() high_water_) pthread_cond_signal(c_cond_);//当产品数量大于high的时候唤醒消费者队列让其过来消费pthread_mutex_unlock(mutex_); }T pop(){pthread_mutex_lock(mutex_);//判断当前线程是否要进入等待需要判断是否满足临界资源的条件//而我们判断临界资源本质是在访问临界区所有这个操作只能在加锁之后if(q.size()0){pthread_cond_wait(c_cond_,mutex_);}T outq.front();// 你想消费就直接能消费吗不一定。你得先确保消费条件满足q.pop();if(q.size()low_water_){pthread_cond_signal(p_cond_ );}pthread_mutex_unlock(mutex_);return out; }~BlockQueue(){pthread_mutex_destroy(mutex_);pthread_cond_destroy(c_cond_);pthread_cond_destroy(p_cond_); }private: int low_water_;//消费到低于到这个数字时就唤醒生产者生产 int high_water_;//生产到这个数字时就唤醒消费者过来消费 pthread_mutex_t mutex_; pthread_cond_t c_cond_;//消费者的等待队列 pthread_cond_t p_cond_;//生产者的等待队列 queueTq;//共享资源 int maxcap_;//阻塞队列的最大容量 };二、main.cpp #include BlockQueue.hpp #include unistd.h #include time.hvoid *Customer(void *args) {BlockQueueint *bq static_castBlockQueueint *(args);while (true){int n bq-pop();cout Customer get n endl;} }void *Productor(void *args) {BlockQueueint *bq static_castBlockQueueint *(args);srand((unsigned int)time(nullptr));int n 0;// 产生随机数放入队列中while (true){sleep(1);n rand() % 100 1;bq-push(n);cout Productor create n: n endl;} }int main() {BlockQueueint *bq new BlockQueueint();// 根据目标所需创建存储不同类型的阻塞队列pthread_t c, p;pthread_create(c, nullptr, Customer, bq); // 消费者线程pthread_create(p, nullptr, Productor, bq); // 生产者线程pthread_join(c, nullptr);pthread_join(p, nullptr);return 0; }
http://www.hkea.cn/news/14430295/

相关文章:

  • 公司网站建设和百度推广流程图互联网品牌营销服务公司
  • 云羽网络网站建设微信客户端官网
  • 网站建设合同需要交印花税广州全面优化各项防控措施
  • phpcms 网站路径新公司怎么做网络推广
  • 如何做一个门户网站百度地图添加到网站
  • 做旅游网站的目的是什么南昌网站建设方案维护
  • 网站宽度 1000px公众号里的电影网站怎么做的
  • 搜什么关键词能找到网站深圳互联网网页设计招聘
  • 网站做飘浮怎么做有无广告销售版本"有广告免费无广告收费"网站
  • 自己有服务器怎么做网站黄骅市海边沙滩在哪里
  • 重庆市建设网站首页wordpress文章怎么生成云标签
  • 2024免费网站推广电脑版微信
  • 国内自助建站平台有哪些网站建设国内外研究现况
  • 龙川网站建设二维码生成器在线
  • 如何做招聘网站的数据分析大淘客网站免费空间
  • 红酒企业网站模板广宁住房和城乡建设局网站
  • wordpress不适合大型网站自己做的网站字体变成方框
  • js素材网站自己做网站切入地图
  • 网站开发的编程软件湘潭网站建设 r磐石网络
  • 做电商引流软文网站百度引流平台
  • 芜湖网站网站建设天津seo选天津旗舰科技a
  • 珠宝出售网站模板厦门网站建设哪家比较好
  • 山东住房建设厅官网站房产公司网站模板
  • 网站关键字排名减压轻松网站开发
  • 网站开发z亿玛酷1流量订制表白网页在线生成制作免费
  • 网站开发 0755html做调查问卷网站
  • 竞品网站分析如何做网站管理
  • 国内无代码和低代码平台.net 网站优化
  • 17zwd一起做网站教学视频个人网站有备案吗
  • 金融公司网站建设模板虚拟机做的网站怎么让外网访问不了