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

宁波网站seo诊断工具做网站个人备案

宁波网站seo诊断工具,做网站个人备案,上海市重点企业名录,珠海网站建设 金蝶文章目录 生产者消费者模型123规则应用场景优点忙闲不均生产者和消费者解耦支持高并发 代码模拟 生产者消费者模型 123规则 1个线程安全的队列#xff1a;只要保证先进先出特性的数据结构都可以称为队列 这个队列要保证互斥#xff08;就是保证当前只有一个线程对队列进行操… 文章目录 生产者消费者模型123规则应用场景优点忙闲不均生产者和消费者解耦支持高并发 代码模拟 生产者消费者模型 123规则 1个线程安全的队列只要保证先进先出特性的数据结构都可以称为队列 这个队列要保证互斥就是保证当前只有一个线程对队列进行操作其他线程不可以同时来操作还要保证同步当生产者将队列中填充满了之后要通知消费者来进行消费消费者消费之后通知生产者来进行生产。 队列起到了生产者和消费者的缓冲作用生产者不用因为没有人消费发愁只需要将生产的数据放到队列中即可消费者不用因为生产者生产了大量数据而发愁只需要正常关注正在处理的数据即可 2个角色的线程生产者和消费者 3个规则生产者和生产者互斥、消费者和消费者互斥、生产者和消费者互斥同步 应用场景 比如说微信的后台程序在不同的场景下一个进程可以是消费者也可以是生产者 优点 忙闲不均 在同一时刻可能接收消息的线程不忙而处理消息的线程一直处于工作状态 生产者和消费者解耦 生产者只关心生产关心队列是否有空闲空间 消费者只关心消费关心队列中是否有数据可用。 生产者和消费者不是串行的执行串行的处理就是当一个线程接收到消息后才可以处理消息并且只有处理完了之后才可以发送消息是一个串行的过程而生产者消费者模型将生产者和消费者解耦接收消息的一辈子就接收消息处理消息的一辈子就处理消息发送消息一辈子就只发送消息不受其他线程的影响 支持高并发 同一时刻多个人发送消息这种情况是支持的因为接收消息的线程只需要接收消息不用干其他事情所以接收线程接收消息的速度很快 代码模拟 采用互斥和同步实现 #includestdio.h #includeiostream #includequeue #includeunistd.h #includepthread.h using namespace std; #define THREAD_COUNT 1//生产者和消费者数量 //创建线程安全队列 class RingQueue{ public:RingQueue(){capacity 1;pthread_mutex_init(que_lock, NULL);pthread_cond_init(consum_cond, NULL);pthread_cond_init(product_cond, NULL);}~RingQueue(){pthread_mutex_destroy(que_lock);pthread_cond_destroy(consum_cond);pthread_cond_destroy(product_cond);}//往队列中放数据生产void Push(int data){pthread_mutex_lock(que_lock);while(que.size()capacity){pthread_cond_wait(product_cond, que_lock);//为什么要用while循环呢//因为当生产者被唤醒后需要再次判断队列是否可以满足生产的条件//生产者或者消费者都是需要在等待结束后再次判断的}que.push(data);//生产往队列中放入数据coutI am product: pthread_self() I product number is data endl;pthread_mutex_unlock(que_lock);pthread_cond_signal(consum_cond);//生产者完成生产后唤醒消费者线程让消费者进行消费}//从队列中取数据消费int Pop(){pthread_mutex_lock(que_lock);while(que.size() 0){pthread_cond_wait(consum_cond, que_lock);}int data que.front();que.pop();coutI am consume: pthread_self() I consume number is data endl;pthread_mutex_unlock(que_lock);pthread_cond_signal(product_cond);//消费者线程消费之后通知生产者来生产return data;}private:queueint que;//线程安全的队列//给队列一把锁保证互斥保证同一时刻只有一个线程对队列进行操作pthread_mutex_t que_lock;//同步的条件变量队列有元素消息没有元素等待唤醒生产者//保证生产者在队列中没有元素的时候进行生产插入元素pthread_cond_t consum_cond;pthread_cond_t product_cond;int capacity;//队列容量队列元素大于容量表示队满不再往里插入元素 }; int g_val 0; pthread_mutex_t g_val_lock PTHREAD_MUTEX_INITIALIZER;//静态初始化保护g_val的互斥锁 void* product_thread_start(void* arg){RingQueue *q (RingQueue*)arg;while(1){pthread_mutex_lock(g_val_lock);//获取g_val的互斥锁q-Push(g_val);g_val;sleep(1);pthread_mutex_unlock(g_val_lock);} } void* consum_thread_start(void* arg){RingQueue *q (RingQueue*)arg;while(1){q-Pop();} } int main(){pthread_t consum_tid[THREAD_COUNT];pthread_t product_tid[THREAD_COUNT];RingQueue* q new RingQueue();for(int i0; iTHREAD_COUNT; i){int ret pthread_create(consum_tid[i], NULL, consum_thread_start, (void*)q);if(ret 0){perror(pthread_create);return 0;}ret pthread_create(product_tid[i], NULL, product_thread_start, (void*)q);if(ret 0){perror(pthread_create);return 0;}}for(int i0; iTHREAD_COUNT; i){pthread_join(consum_tid[i], NULL);pthread_join(product_tid[i], NULL);}delete q;return 0; }执行结果 可以看到有效的控制了生产者和消费者的消费顺序当生产者生产一个消费者就消费一个消费者消费后生产者接着生产
http://www.pierceye.com/news/196543/

相关文章:

  • 建设工程人才招聘信息网站响应式网站 cms
  • 设计签名免费网站福州的网站建设
  • 太原这边有做网站的吗wordpress实现pdf浏览
  • 制作微信公众号的网站开发30岁做网站运营
  • 松江手机网站开发正规免费代理
  • 太原市建设路小学网站昆山住房与城乡建设局网站
  • 石家庄的网站的公司计算机应用技术专业网站开发方向
  • 网站优化软件排行榜八年级微机网站怎么做
  • 织梦网站漏洞cms网站开发流程
  • 网站开发规划书怎么写企业cms开源
  • html网站免费下载海珠区建网站
  • 石家庄住房城乡建设厅网站宿迁网站建设推广公司
  • 广州模板网站建设费用2024新闻热点摘抄
  • 河北秦皇岛建设局网站做网站简单的软件
  • 上海网站开发外包公司最新新闻热点事件短篇
  • wordpress实现网站勋章功能网站建设需要什么资质
  • 河北沙河市建设局网站威海好的网站建设公司
  • 网站建设怎么放到云空间上海企业网站模板
  • 设计和建设企业网站心得和体会wordpress和新浪微博同步
  • 网站底部横条导航代码制造业erp系统软件有哪些
  • 网站建设公司antnw企业营销型网站制作
  • 接口网站开发wordpress安装网站无法
  • 九九9九九9视频在线观看优化网站结构一般包括
  • 网站缺点国外网站素材
  • 网站域名到期如何续费淘宝客绑定网站备案号
  • 什么是自建站常州 网站制作
  • 网站开发基础培训网站做推广有用吗
  • 音乐网站开发模板网页设计师用什么软件
  • 烟台优化网站重庆酉阳网站设计公司
  • 网站维护工作太原公司网站建设