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

网站建设 实训题/应用宝aso优化

网站建设 实训题,应用宝aso优化,怎么把自己做的网站放到公网上,做网站logo用啥软件互斥量、原子操作都是实现线程同步的方法,今日介绍使用条件变量来实现线程同步。在多线程应用中,当某个线程的执行依赖于另一个线程对数据的处理时,这个线程可能没有被阻塞,只是不断地检查某个条件是否成立了(这个条件…

互斥量、原子操作都是实现线程同步的方法,今日介绍使用条件变量来实现线程同步。在多线程应用中,当某个线程的执行依赖于另一个线程对数据的处理时,这个线程可能没有被阻塞,只是不断地检查某个条件是否成立了(这个条件就是另一个线程对数据处理的结果的指示器),这是一种“忙等待”的方式实现线程间的同步。在实践中应该避免使用,因为忙等待需要让线程反复检查某个条件是否为真,浪费大量宝贵的 CPU 资源在无用的活动上。使用条件变量既可以尽量减少处理器资源的浪费,又能够解决线程间数据依赖的问题。

C 标准库还提供了与条件变量相关的常用函数:

  • cnd_signal:发送条件变量,唤醒阻塞在cnd_wait调用处的线程
  • cnd_wait:阻塞线程,将线程加入等待队列,将会被cnd_signal唤醒
  • cnd_broadcast:唤醒所有在等待某个条件变量的线程
  • cnd_timedwait:带超时限制的cnd_wait

实例如下:

#include <threads.h>
#include <stdio.h>mtx_t mutex;// 互斥量
cnd_t cond; // 条件变量
int done = 0;
int run(void* arg){mtx_lock(&mutex);//加锁done = 1;cnd_signal(&cond);//发送条件信号mtx_unlock(&mutex);//解锁return thrd_success;
}int main(void){
#ifndef __STDC_NO_THREADS__mtx_init(&mutex,mtx_plain);//初始化互斥量cnd_init(&cond);//初始化条件变量thrd_t thread;thrd_create(&thread,run,NULL);//创建线程mtx_lock(&mutex);//加锁while(done == 0){cnd_wait(&cond,&mutex);//让当前线程进入等待队列,后续被唤醒后,互斥量会再次上锁}	mtx_unlock(&mutex);//解锁printf("The value of done is %d.\n",done);mtx_destroy(&mutex); cnd_destroy(&cond); // 销毁条件变量
#endifreturn 0;
}

在上述程序中,在 main 线程中,调用了与条件变量相关的函数 cnd_wait。该函数在被调用时,需要当前线程获得一个互斥锁,并将其作为实参传递给它,该函数调用后锁会被释放。同时,所有执行到此处的线程都将被阻塞。

子线程会执行run方法,run方法里会对done加1,然后调用函数 cnd_signal发送条件信号,唤醒所有之前被阻塞在函数 cnd_wait 处的线程,来让它们中的一个可以继续运行。在我们的例子中,只有 main 函数对应的一个线程,所以此时,互斥量将被重新上锁,main 线程将继续执行接下来的指令。

这样一来,某个线程可以在完成了某件事情后,通知并唤醒等待线程,让其继续工作,完成接下来的任务。而在此过程中,不需要线程频繁查询标志量。CPU 资源也得到了更好的利用。在并发编程中,通过条件变量,可以进一步实现监视器、管程等工具和同步原语。它也能够很好地解决生产者 - 消费者问题。

http://www.jmfq.cn/news/5311027.html

相关文章:

  • 电商网站建设运营协议/广告设计需要学什么
  • 网站建设哪家公司好成都网站建设/在百度怎么创建自己的网站
  • 网站建设公司怎么拉单/外贸建站公司
  • 安徽网新科技网站建设介绍/各大搜索引擎收录入口
  • 校园网站建设的请示/seo优化专员招聘
  • 政务公开加强网站建设/网络营销的方法有哪些?举例说明
  • 网站建设维护有哪些内容/seo营销优化软件
  • 新闻网站内容建设措施/google浏览器官网入口
  • 红旗网站建设/ciliba最佳磁力搜索引擎
  • 云南网站建设选天软/小程序开发流程
  • 镇江网站建设哪家好/智能网站推广优化
  • 网站建设的需求分析报告/福州seo
  • 网站建设如何来选择空间/教程seo推广排名网站
  • 江苏省建设工程竣工验收网站/东营网站seo
  • 四川网站建设咨询/广东深圳今天最新通知
  • 电子商务网站建设的模式/域名搜索引擎
  • 建设部招标网 官方网站/营销网站建设哪家快
  • 石家庄建设网站哪家好/seo俱乐部
  • 美容加盟网站建设/国内免费域名注册网站
  • 广州网站建设V芯ee8888e/站长工具查询域名信息
  • 吉林电商网站建设价格/网络营销推广方式有哪些
  • 昆明网站建设昆明/关键词营销推广
  • 移动网站建设价格/谷歌seo引擎优化
  • 政府门户网站建设招标文件/国家职业技能培训学校
  • 完美网站建设/网络热词2022流行语及解释
  • 动态网站建设 js/柳州今日头条新闻
  • 海南省建设培训与执业资格注册中心网站/360优化关键词
  • 宁夏公路建设局网站/网络营销心得体会
  • 农业信息网站 建设/百度seo怎么查排名
  • 西宁市网站建设公司/江门百度seo公司