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

青岛城阳网站制作关于建设网站的经费请示

青岛城阳网站制作,关于建设网站的经费请示,网站 内页,校园网站建设的可行性分析概述 条件变量的作用#xff1a; 条件变量和互斥量配合使用#xff0c;主要应用于生产者和消费者问题。 这种问题也是一种临界资源的问题#xff0c;但与互斥量一文中 写文件 这种资源不同。文件是一直存在的临界资源#xff0c;而生产者的资源不是一直存在…概述 条件变量的作用 条件变量和互斥量配合使用主要应用于生产者和消费者问题。 这种问题也是一种临界资源的问题但与互斥量一文中 写文件 这种资源不同。文件是一直存在的临界资源而生产者的资源不是一直存在资源的产生需要一些条件。条件变量实现了在等待生产者时消费者进入休眠状态提高运行效率。 条件变量使用方法 1、初始化互斥量、条件变量 2.1 生产者加锁互斥量-生产资源-发送信号给条件变量-解锁互斥量 2.2 消费者加锁互斥量-无资源时等待条件变量-消费资源-解锁互斥量 相关函数 1、初始化 //动态初始化 int pthread_cond_init(pthread_cond_t *restrict cond,const pthread_condattr_t *restrict attr); //静态初始化 pthread_cond_t cond PTHREAD_COND_INITIALIZER; 返回值成功返回0失败返回错误码 cond要初始化的条件变量 attr条件变量属性NULL代表默认属性 2、销毁  int pthread_cond_destroy(pthread_cond_t *cond); 返回值成功返回0失败返回错误码 cond要销毁的条件变量 3、等待资源 //等待临界资源,阻塞 int pthread_cond_wait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex); //等待临界资源,一段时间后退出阻塞 int pthread_cond_timedwait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex,const struct timespec *restrict abstime); cond等待哪一个条件变量的信号 mutex与条件变量搭配使用的互斥量 注意该函数在没有资源时会解锁互斥量并把本线程休眠。当接收到资源时会解除休眠并再次把互斥量上锁 4、发送信号  //单个发送信号,代表资源来了,所有线程竞争该资源 int pthread_cond_signal(pthread_cond_t *cond); //广播发送信号,代表资源来了 int pthread_cond_broadcast(pthread_cond_t *cond);cond要向哪一个条件变量发送信号 注意当 发送信号 比 等待资源 早时等待资源 是接收不到信号的这会导致信号丢失。这意味着当运行到 等待资源 时会进入阻塞直到第二次 发送信号 到来 生产者消费者示例代码 #include unistd.h #include stdio.h #include errno.h #include pthread.h #include stdlib.h pthread_mutex_t mutex;//互斥锁 pthread_cond_t cond;//条件变量 //资源 struct resource{char num;struct resource* pNext; }; struct resource Head; struct resource* pTail; //消费者 void* consumer(void* arg){struct resource* pResource NULL;while(1){//1.加锁互斥量pthread_mutex_lock(mutex);//2.无资源时等待条件变量,有资源时不断消耗资源while(Head.pNext NULL){//while的作用:防止信号为广播时产生惊群效应pthread_cond_wait(cond,mutex);}//3.消费资源pResource Head.pNext;Head.pNext Head.pNext-pNext;if(Head.pNext NULL){pTail Head;}printf(consumer:num %d\n,pResource-num);free(pResource);//4.解锁互斥量pthread_mutex_unlock(mutex);sleep(1);} } //生产者 void* producer(void* arg){struct resource* pNew NULL;int i 0;while(1){//1.加锁互斥量pthread_mutex_lock(mutex);//2.生产资源if((pNew malloc(sizeof(struct resource))) NULL){printf(malloc err\n);pthread_exit(NULL);}pNew-num i;pNew-pNext NULL;pTail-pNext pNew;pTail pNew;printf(producer:num %d\n,pNew-num);//3.发送信号给条件变量pthread_cond_signal(cond);//4.解锁互斥量pthread_mutex_unlock(mutex);sleep(1);} } int main(){pthread_t tid;Head.pNext NULL;pTail Head;//初始化互斥锁和条件变量pthread_mutex_init(mutex,NULL);pthread_cond_init(cond,NULL);//创建线程if(pthread_create(tid,NULL,producer,NULL) ! 0){perror(pthread_create);pthread_detach(tid);return -1;}if(pthread_create(tid,NULL,consumer,NULL) ! 0){perror(pthread_create);return -1;}while(1);//销毁互斥锁和条件变量pthread_mutex_destroy(mutex);pthread_cond_destroy(cond);return 0; }
http://www.hkea.cn/news/14366462/

相关文章:

  • 黄冈做网站技术支持的品牌推广广告
  • 石家庄大型公司建站网站建设网站及上传
  • 研究院网站建设方案中国十大传媒公司
  • 政协网站建设方案建筑行业网站开发
  • 无锡营销型网站建设公共网络建设指导书
  • 网站开发方式有汕头百姓网二手车交易市场
  • 厦门网站外包敦化市住房和城乡建设局网站
  • 买了云服务器怎么做网站网站开发建设兼职
  • 英文网站建设运营企业网站建设报价单
  • 做网站的哪里好网站后端架构如何做
  • 用vue做网站一般用什么组件库深圳微信网站公司
  • 温州免费建站网站备案编号查询
  • 网站模板 单页做微商必会的软件网站
  • 抄袭网站后台会侵权吗外包做网站需要多少钱
  • 咪豆建站建立官网需要多少钱
  • 网站模板 jsp做网站的销售团队
  • 宿迁专业网站建设公司网站建设潮州
  • 游戏网站建设论文如何将域名和网站绑定
  • 网站界面友好免费微信小程序商城官网
  • 怎么买域名建网站九台网络推广
  • 网站空格 教程网站建设功能图
  • 一些房产网站是怎么做的江干区网站建设
  • 网站建设与管理提纲建设网站有哪些方法
  • 网站服务器维护技术WordPress干什么的
  • php完整电商网站开发源码网站建设需要的职位
  • 易语言编程可以做网站么阿里+wordpress
  • 营销型网站建设申请域名时公司类型的域名后缀一般是网站 建设网站
  • 上海好的高端网站建北京十大教育培训机构排名
  • 网站建设与网页设计可行性分析报告梅县区住房和城乡规划建设局网站
  • 建立网站定制招聘网页制作软件