问题描述
假设我有一个变量X想要在A线程中读取。而在B线程中会改变变量X的值
我想在变量X没有改变的时候阻塞A线程,但是超时需要退出。
变量X改变时,再次恢复线程运行。
这个在B线程中安装一个信号量,A线程阻塞获取可以解决
但是这个B线程是别人代码写的。不好修改
不想再增加一个线程去循环读取变量X是否改变,再释放信号量
需求
A线程如何在线程本身识别变量是否改变。未改变:阻塞线程。改变线程:恢复运行
我的想法是:使用while()阻塞线程可行。进入while前获取进入时间,while里不断获取当前时间。判断超时
是否有函数或者功能可以实现,如果有轮子不想自己写了
实际情况
MCU和电机使用CNAOPEN通信。
间隔一定时间,MCU发送这个变量至电机。
间隔一定时间,电机发送这个变量的实际状态至MCU。
改变这个变量值,会时间到达后会发送改变后变量至电机。
目前采用的方法是,mSH命令去改变这个变量值,延时后执行下一步。没有判断电机实际状态是否到达预期。
所以想增加查询实际值再执行下一步。
需要去查询实际状态是否达到预期值,没有达到阻塞线程。达到恢复线程运行,执行下一步。
更多回帖