浅谈Linux条件变量的使用
作者:jingxian 发布时间:2023-08-25 22:42:22
标签:linux,条件变量
Linux线程同步之间存在多种机制,条件变量是一种类似操作系统里提到的生产者-消费者算法的同步机制,允许线程以无竞争的方式等待特定条件的发生。
示例伪代码:
void* Thread1(void){
while(线程运行条件成立){
…
pthread_mutex_lock(qlock);
while(条件成立)
pthread_cond_wait(qcond,qlock);
或者
pthread_cond_wait(qcond,qlock,timeout);
reset条件变量…
pthread_mutex_unlock(qlock);
}
}
void* Thread2(void){
while(线程运行条件成立){
…
pthread_mutex_lock(qlock);
set了条件变量…//可以发送处理信号
pthread_cond_signal(qcond);
或者
pthread_cond_broadcast(qcond);
pthread_mutex_unlock(qlock);
}
}
条件变量需要配合互斥量一起使用,互斥量作为参数传入wait函数,函数把调用线程放到等待条件的线程列表上,然后对互斥量解锁,这两个是原子操作。当线程等待到条件,从wait函数返回之前,会再次锁住互斥量。
1.Lock
2.Unlock
3.等待
4.Lock
5.Unlock
第2,3,4步是wait的内部操作
在wait被唤醒后,还需要在while中去检查条件,这是为了防止“惊群效应”,比如有两个线程同时阻塞在wait,先后醒来,快的线程做完处理然后把条件reset了,并且对互斥量解锁,此时慢的线程在wait里获得了锁(即第4步)返回,还再去做处理就会出问题。


猜你喜欢
- foreach($kws as $k) { $k = trim($k); if($k!=”") { if($i > $max
- 国内著名IT类Blog《awflasher》上最近发布了一篇文章《ByeBye Google Adsense ---全面撤下我的内容广告》。
- 1 安装GIT$ sudo aptitude install git$ sudo aptitude install
- 阳光总在风雨后,成功好象永远是在失败中找到。这是四月的第一场雨。清澈的雨把株洲的天空洗的非常明媚,然后清爽的阳光大把大把地散落人间。然而这样
- 先给大家献上VMware 14 激活码FF31K-AHZD1-H8ETZ-8WWEZ-WUUVACV7T2-6WY5Q-48EWP-ZXY7
- 目录简介体系结构ESXI的优点一、什么是vSphere?二、虚拟机的好处三、为什么要使用虚拟机:四、vSphere基础物理架构五、vSphe
- 真的都是些小建议,如果你是学生站长的话,如果你有个几分钟闲余时间的话,不妨看完这篇文章,看看有没有一点帮助。学生站长的定义:在这里我定的比较
- 有两台邮件服务器分别为192.168.1.1(windows下主机名为b.test.cn)和192.168.1.3(linux下主机名为a.
- 因为经历过两个网站交易,深感买方与卖方博弈的心里。个人站长做一个站不容易希望能给他们一些借鉴,当然仅仅是个人观点。卖站者与买站者永远是个博弈
- 核心提示:根据网站网页关键词进行淘宝推广商品自动搜索、采集、显示,真真实现淘宝推广全自动化,推广信息永不失效。自淘宝网推出淘宝客以来,无数的
- 前言在我们开发测试过程中,需要频繁的更新docker镜像,然而默认情况下,docker的2375端口是关闭的,下面介绍如何打开端口。1、打开
- WordPress是一款成熟的开源CMS平台,新推出的2.9版本依然保持了以往良好的口碑。这篇文章从WordPress 2.9的codex文
- 用户需要输入解密密码才能访问已加密的虚拟机。没有解密密码,就无法访问加密虚拟机的VMDK文件。VMware Workstation加密位于物
- 23日从工业和信息化部了解到,截至2月份,我国网民数达2.21亿人,超过美国居全球首位。在2007年底,这一数字为2.1亿人。据了解,今年在
- 内容为王,已越来越被业界所接受,并被视为SEO的典型范例。当然,为了捍卫这个头衔,网站内容必须与搜索引擎用户相关,便于搜索引擎的索引,具有导
- 我曾经写过一篇文章叫“不要在国内注册域名”,讨论不要使用国内的域名注册商进行域名注册,甚至不要用使用国内网站查询域名,之后我发现有很多人留言
- WordPress 3.0已经发布有差不多半个月了,如前面这篇帖子所介绍,WP3.0有个对我们来说比较实用的功能,就是他的多站点模式。Wor
- 相对来说,中小企业多数存在技术力量/储备较弱,规模偏小,抵御系统灾难/风险能力弱等缺点;同时由于竞争环境和成本压力,中小企业的IT状况也很难
- 首先,根据自己网站的统计数据来分析,网上超多免费统计系统,随便找一个吧,里面都有很详细的搜索引擎来路、关键词来路分析等功能,我们要做的就是仔
- 说明:本帖是我经过一天一夜完成的,不同于一般网上文章,除详细的将整个配置过程和 测试过程都详细截图说明外,尤其在FastCGI方面采用微软的