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

有了自己的域名怎么做网站海东市网站建设

有了自己的域名怎么做网站,海东市网站建设,购物的网站功能,网站设计与规划论文文章目录 一、多线程的同步 1.概念 2.条件变量 2.1条件变量概念 2.2条件变量接口 1.条件变量初始化 2.等待条件满足 3.唤醒等待 3.销毁条件变量 2.3条件变量demo 二、生产消费模型 1.生产消费模型 2.基于BlockQueue的生产者消费者模型 3.基于C用条件变量和互斥锁实… 文章目录 一、多线程的同步 1.概念 2.条件变量 2.1条件变量概念 2.2条件变量接口 1.条件变量初始化 2.等待条件满足 3.唤醒等待 3.销毁条件变量 2.3条件变量demo 二、生产消费模型 1.生产消费模型 2.基于BlockQueue的生产者消费者模型 3.基于C用条件变量和互斥锁实现一个生产消费模型 4.信号量 1.信号量概念 2.信号量接口 1.初始化信号量 2.等待信号量P操作 --) 3.发布信号量(V操作 ) 4.销毁信号量 5.环形生产者消费者模型 当一个线程互斥地访问某个变量时它发现可能再其他线程改变状态之前它被挂起。 例如一个线程访问队列发现队列为空它只能等待。直到其他线程将一个节点加入到队列中这种情况就需要用到条件变量。 一、多线程的同步 1.概念 在保证数据安全的前提下让线程能够按照某种特定的顺序访问临界资源从而有效避免饥饿问题叫做同步。 2.条件变量 2.1条件变量概念 条件变量是线程同步的一种手段如果只有一个线程条件不满足一直等待下去都不会满足所以必须要有一个线程通过某些操作改变共享变量使得原来的不满足条件变的满足并且友好通知等待在条件变量上的线程。 条件变量不会无缘无故满足必然牵扯到共享数据的变化所以一定需要用锁来保护没有锁就无法安全的获取和修改共享数据 2.2条件变量接口 1.条件变量初始化 int pthread_cond_init(pthread_cond_t * restrict cond,const pthread_condattr_t * restrict attr);参数cond 要初始化的条件变量attr:NULL2.等待条件满足 int pthread_cond_wait(pthread_cond_t * restrict cond,pthread_mutex_t * restrict mutex);参数cond: 要在这个条件变量上等待mutex:互斥量等待的时候要释放掉这个锁 3.唤醒等待 int pthread_cond_broadcast(pthread_cond_t * cond); int pthread_cond_signal(pthread_cond_t * cond); 3.销毁条件变量 int pthread_cond_destroy(pthread_cond_t * cond); 2.3条件变量demo #includeiostream #includepthread.h #includeunistd.h #includecstdio #includestring using namespace std;const int num 5; pthread_cond_t cond PTHREAD_COND_INITIALIZER; pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER;void *active(void *args) {string name static_castconst char*(args);while(true){pthread_mutex_lock(mutex);pthread_cond_wait(cond,mutex);// 在调用的时候会自动释放锁coutname activing...endl;pthread_mutex_unlock(mutex);}} int main() {pthread_t tids[num];for(int i 0; inum;i){char * name new char[32];snprintf(name,32,thread-%d,i1);pthread_create(tidsi,nullptr,active,name);}sleep(3);while(true){coutmain thread wakeup threadendl;pthread_cond_signal(cond);sleep(1);}for(int i 0; inum;i){pthread_join(tids[i],nullptr);}}二、生产消费模型 1.生产消费模型 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯而通过阻塞队列来进行通讯所以生产者生产完数据之后不用等待消费者处理直接扔给阻塞队列消费者不找生产者要数据而是直接从阻塞队列里取阻塞队列就相当于一个缓冲区平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。 2.基于BlockQueue的生产者消费者模型 在多线程编程中阻塞队列 (Blocking Queue) 是一种常用于实现生产者和消费者模型的数据结构。其与普通的队列区别在于当队列为空时从队列获取元素的操作将会被阻塞直到队列中被放入了元素当队列满时往队列里存放元 素的操作也会被阻塞直到有元素被从队列中取出(以上的操作都是基于不同的线程来说的线程在对阻塞队列进程 操作时会被阻塞。 3.基于C用条件变量和互斥锁实现一个生产消费模型 需求使用条件变量和互斥锁实现一个生产消费模型。生产消费模型是一个队列如上图这里使用stl中的队列先实现单生产单消费一个线程负责生产一个线程负责消费。这两个线程需要访问同一个队列所以需要一把锁。在线程挂起的时候还需要有信号告诉线程现在条件满足了所以要使用两个条件变量分别通知生产和消费线程转为就绪态。 实现将这个模型封装成一个类两个线程去访问的时候队列非满就可以生产往队列里push数据队列中数据非空就可以消费从队列里pop数据。所以需要两个接口push和pop,调试成功后最后使用多生产多消费实现。实现代码如下 //blockqueue.hpp 声明方法定义在一个文件中const int gcap 5; templateclass T class blockQueue {public://构造blockQueue(const int cap gcap):_cap(cap),{pthread_mutex_init(_mutex,nullptr);pthread_cond_init(_consumerCond,nullptr);pthread_cond_init(_productorCond,nullptr);}bool isFull() {return _q.size() _cap;}bool isEmpty() { return _q.empty()};//将数据塞进队列 生产void push(const T in){pthread_mutex_lock(_mutex);//注意这里不要用if可能会误唤醒while(isFull()){//在当前的条件下休眠就注定了要释放锁让别的线程去竞争锁//休眠就是被os切走了醒来之后又要重新申请锁pthread_cond_wait(_productorCond,_mutex); }//如果没满就让他继续生产_q.push(in);//生产之后让消费者来消费唤醒消费的线程 再释放自己手中的锁pthread_cond_signal(_consumerCond);pthread_mutex_unlock(_mutex);}//队列非空 消费 void pop(){pthread_mutex_lock(_mutex);//判断队列是否为空while(isEmpty()){//空的话在当前条件下休眠pthread_cond_wait(_consumerCond,_mutex);}//非空 开始消费 并且唤醒生产者 可以生产了pthread_cond_signal(_productorCond);pthread_mutex_unlock(_mutex);}//析构~blockQueue(){//释放锁和两个信号量 队列是一个临时变量可以不用在这里释放pthread_mutex_destroy(mutex);pthread_cond_destroy(_consumerCond);pthread_cond_destroy(_productorCond);}private:std::queueT _q;int _cap; //队列中的容量pthread_mutex_t _mutex;pthread_cond_t _consumerCond; //消费者对应的条件变量如果队列中数据为空,waitpthread_cond_t _productorCond; //生产者对应的条件变量如果队列中数据为满wait }; 4.信号量 1.信号量概念 POSIX信号量和System V 信号量作用相同都是用于同步操作达到无冲突访问共享资源的目的。但是POSIX可以用于线程间同步。信号量本质就是用来描述临界资源中的数量 sem 1,就只有0/1两种状态就是互斥锁。 多元信号量每个线程在访问对应资源时先申请信号量。申请成功就表示现在可以时候该资源。申请失败就目前无法访问。 2.信号量接口 #includesemaphore.h1.初始化信号量 int sem_init(sem_t * sem, int pshared ,unsiged int value);参数:pshared 0 表示线程间共享非0 表示进程间共享value:信号量初始值2.等待信号量P操作 --) int sem_wait(sem_t * sem); 3.发布信号量(V操作 ) int sem_post(sem_t * sem); 4.销毁信号量 int sem_destroy(sem_t * sem); 5.环形生产者消费者模型  环形队列采用数组模拟用%运算来模拟环状特性。在为空/满的时候要保证游戏规则在非空非满的时候保证并发。 环形结构起始状态和结束状态都是一样的不容易判断是空还是满所以通过加计数器或者标记位来判断。另外也可以预留一个空的位置作为满的状态。 但是我们现在有信号量这个计数器就可以进行多线程间的同步过程。 生产者关心这个空间是否满了消费者关心是否有数据。环形队列只要访问不同的区域生产和消费行为可以同时进行。 需求生产消费模型是一个队列使用数组模拟同时需要两个线程生产线程和消费线程。要维护3种关系生产者和生产者消费者和消费者生产者和消费者之间的关系。其中生产者和生产者需要互斥。消费者和消费者同样互斥。生产者和消费者需要先生产再消费所以需要同步。同时访问同一个队列共享资源需要互斥关系。 实现将队列封装成类用数组模拟实现。类需要暴露的接口就是push和pop即实现p操作和v操作。同时要知道这个队列的大小定义两个信号量一个是消费者关心的一个是生产者关心。申请信号量成功之后也要知道生产和消费此刻对应队列中的位置就是具体维护哪个区域。即两个下标。申请自己关心的资源互相V对方的资源 static const int N 5templateclass T class RingQueue {private:void P(sem_t s){sem_wait(s);}void V(sem_t s){sem_post(s);}public://构造RingQueue(int num N):_ring(num),_cap(num){sem_init(_data_sem,0,0); sem_init(_space_sem,0,num);//刚开始都为0_c_step _p_step 0;}void push(const T in){//申请P(_space_sem);_ring[_p_step] in;_p_step % _cap;V(_data_sem);}void pop(T * out){P(_data_sem);*out _ring[_c_step];_c_step _cap;V(_spcae_sem);}~RingQueue(){sem_destroy(_data_sem);sem_destroy(_space_sem);}private:std::vectorT _ring;int _cap;sem_t _data_sem;sem_t _space_sem;int _c_step;int _p_step; };
文章转载自:
http://www.morning.ncfky.cn.gov.cn.ncfky.cn
http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn
http://www.morning.gagapp.cn.gov.cn.gagapp.cn
http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn
http://www.morning.jrplk.cn.gov.cn.jrplk.cn
http://www.morning.mnclk.cn.gov.cn.mnclk.cn
http://www.morning.ddzqx.cn.gov.cn.ddzqx.cn
http://www.morning.kttbx.cn.gov.cn.kttbx.cn
http://www.morning.qwnqt.cn.gov.cn.qwnqt.cn
http://www.morning.wqbzt.cn.gov.cn.wqbzt.cn
http://www.morning.pbgnx.cn.gov.cn.pbgnx.cn
http://www.morning.bpxmw.cn.gov.cn.bpxmw.cn
http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn
http://www.morning.ljtwp.cn.gov.cn.ljtwp.cn
http://www.morning.rlwgn.cn.gov.cn.rlwgn.cn
http://www.morning.qwlml.cn.gov.cn.qwlml.cn
http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn
http://www.morning.jkdtz.cn.gov.cn.jkdtz.cn
http://www.morning.qwfl.cn.gov.cn.qwfl.cn
http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn
http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn
http://www.morning.krgjc.cn.gov.cn.krgjc.cn
http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn
http://www.morning.fphbz.cn.gov.cn.fphbz.cn
http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn
http://www.morning.kqyyq.cn.gov.cn.kqyyq.cn
http://www.morning.cprbp.cn.gov.cn.cprbp.cn
http://www.morning.smj79.cn.gov.cn.smj79.cn
http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn
http://www.morning.pghgq.cn.gov.cn.pghgq.cn
http://www.morning.qpfmh.cn.gov.cn.qpfmh.cn
http://www.morning.ngmjn.cn.gov.cn.ngmjn.cn
http://www.morning.rpfpx.cn.gov.cn.rpfpx.cn
http://www.morning.touziyou.cn.gov.cn.touziyou.cn
http://www.morning.wztnh.cn.gov.cn.wztnh.cn
http://www.morning.grxsc.cn.gov.cn.grxsc.cn
http://www.morning.qsy37.cn.gov.cn.qsy37.cn
http://www.morning.xrsqb.cn.gov.cn.xrsqb.cn
http://www.morning.tllhz.cn.gov.cn.tllhz.cn
http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn
http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn
http://www.morning.ksjmt.cn.gov.cn.ksjmt.cn
http://www.morning.ydxg.cn.gov.cn.ydxg.cn
http://www.morning.wbdm.cn.gov.cn.wbdm.cn
http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn
http://www.morning.rhqr.cn.gov.cn.rhqr.cn
http://www.morning.china-cj.com.gov.cn.china-cj.com
http://www.morning.lmfmd.cn.gov.cn.lmfmd.cn
http://www.morning.plfy.cn.gov.cn.plfy.cn
http://www.morning.fhtmp.cn.gov.cn.fhtmp.cn
http://www.morning.dyzbt.cn.gov.cn.dyzbt.cn
http://www.morning.ktdqu.cn.gov.cn.ktdqu.cn
http://www.morning.kgqww.cn.gov.cn.kgqww.cn
http://www.morning.hprmg.cn.gov.cn.hprmg.cn
http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn
http://www.morning.zhiheliuxue.com.gov.cn.zhiheliuxue.com
http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn
http://www.morning.kndt.cn.gov.cn.kndt.cn
http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn
http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn
http://www.morning.rmfh.cn.gov.cn.rmfh.cn
http://www.morning.nnjq.cn.gov.cn.nnjq.cn
http://www.morning.ktmnq.cn.gov.cn.ktmnq.cn
http://www.morning.ttrdr.cn.gov.cn.ttrdr.cn
http://www.morning.yrdt.cn.gov.cn.yrdt.cn
http://www.morning.chkfp.cn.gov.cn.chkfp.cn
http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn
http://www.morning.skqfx.cn.gov.cn.skqfx.cn
http://www.morning.ppwdh.cn.gov.cn.ppwdh.cn
http://www.morning.qsy41.cn.gov.cn.qsy41.cn
http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn
http://www.morning.lcjw.cn.gov.cn.lcjw.cn
http://www.morning.hcxhz.cn.gov.cn.hcxhz.cn
http://www.morning.bkslb.cn.gov.cn.bkslb.cn
http://www.morning.wdwfm.cn.gov.cn.wdwfm.cn
http://www.morning.pjrql.cn.gov.cn.pjrql.cn
http://www.morning.gthwr.cn.gov.cn.gthwr.cn
http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn
http://www.morning.jfnlj.cn.gov.cn.jfnlj.cn
http://www.morning.tjjkn.cn.gov.cn.tjjkn.cn
http://www.tj-hxxt.cn/news/243186.html

相关文章:

  • 浏览有关小城镇建设的网站6wordpress免费精品主题
  • 保定网站制作计划动漫设计软件有哪些
  • 做网站什么一级导航二级导航python做网站多么
  • 网站建设长沙投百度做广告效果怎么样
  • 京东网站网站建设是什么西双版纳傣族自治州地图高清版
  • 网站引导页动态效果怎么做的关键词歌词
  • 广西网站seo做微网站公司简介
  • 网站服务器关闭怎么恢复聊天软件开发需要多少钱
  • 网站建设需要什么语言服务器网站怎么做
  • 怎样注册网站wordpress公司展示网站
  • 校园网站建设情况通报大型门户网站程序
  • 南京重庆网站建设广州网站推广
  • 网站建设后如何检测网站建设系统服务
  • 北京seo网站设计兰州网站设计厂家
  • 成都电子商务网站建站北京3d效果图制作公司
  • 海洋网络提供网站建设怎样做网站轮播
  • 昆明门户网站宠物店网页设计素材
  • 广告多的网站找专题页面那个网站好
  • 如何在网站源码做授权西双版纳网站制作公司
  • 企业网站 费用市场运营和市场营销的区别
  • 网站和app的关系wordpress自动回复
  • 成都 企业网站建设电商平面设计教程
  • 郑州企业网站推广wordpress中的联系方式
  • 落实网站建设培训班精神wordpress会员可见主题
  • 织梦 商城网站营销型网站建设价格是多少
  • 两支队伍建设专题网站南通优普企业网站建设
  • 雄安建设网站制作360信息流广告平台
  • 购物网站前端浮动特效怎么做磁力狗在线搜索
  • 网上购物网站开发背景动漫制作专业的学校
  • 网站做菠菜苏州高新区网页设计