条件变量与互斥锁共同决定线程工作顺序

在这里插入图片描述
条件变量的初始化与摧毁
两个函数一个是广播一个点对点
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
条件变量的使用方法,先加锁,然后wait,wait函数首先回去查询一次是否为真,如果是真则继续执行,如果为假则堵塞。堵塞之后,wait函数不在继续查询,而是等待signal或者broadcast发通知,但是此时数据段已经被lock住,无法调用signal或者broadcast函数。所以wait函数需要lock参数,他会自动解锁等待通知,然后等到了之后再加锁。在这里插入图片描述
条件变量 线程之间的打招呼
用一个线程控制吧其他线程 广播式
值为二元 bool
先采集到温度再打包上传
条件变量最好的例子,生产者与消费者
先生产出来再通知消费者
多线程开发总结
任务设计分为单词执行,事件触发,周期执行
任何信号量,条件变量,互斥锁都是最好静态创建,即再main函数里面创建,否则有可能会再其他函数里面一直占用资源。

时间一到,标志位赋值为1,然后modbus采集,采集完之后打包,打包之后再上报。

实时操作系统的做法用两个条件变量
首先是用闹钟时间一到就发送信号给modbus采集,注意modbus采集的时候要加两把锁,第一把锁的作用是保护,modbus采集成功就写操作,写成功后就发送条件变量signal,然后mqtt打包上报

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值