条件变量的初始化与摧毁
两个函数一个是广播一个点对点
条件变量的使用方法,先加锁,然后wait,wait函数首先回去查询一次是否为真,如果是真则继续执行,如果为假则堵塞。堵塞之后,wait函数不在继续查询,而是等待signal或者broadcast发通知,但是此时数据段已经被lock住,无法调用signal或者broadcast函数。所以wait函数需要lock参数,他会自动解锁等待通知,然后等到了之后再加锁。
条件变量 线程之间的打招呼
用一个线程控制吧其他线程 广播式
值为二元 bool
先采集到温度再打包上传
条件变量最好的例子,生产者与消费者
先生产出来再通知消费者
多线程开发总结
任务设计分为单词执行,事件触发,周期执行
任何信号量,条件变量,互斥锁都是最好静态创建,即再main函数里面创建,否则有可能会再其他函数里面一直占用资源。
时间一到,标志位赋值为1,然后modbus采集,采集完之后打包,打包之后再上报。
实时操作系统的做法用两个条件变量
首先是用闹钟时间一到就发送信号给modbus采集,注意modbus采集的时候要加两把锁,第一把锁的作用是保护,modbus采集成功就写操作,写成功后就发送条件变量signal,然后mqtt打包上报