嵌入式技术william hill官网
直播中

李玉兰

7年用户 1508经验值
私信 关注
[问答]

是否有函数或者功能可以实现A线程阻塞变量的值呢?

问题描述

假设我有一个变量X想要在A线程中读取。而在B线程中会改变变量X的值
我想在变量X没有改变的时候阻塞A线程,但是超时需要退出。
变量X改变时,再次恢复线程运行。
这个在B线程中安装一个信号量,A线程阻塞获取可以解决
但是这个B线程是别人代码写的。不好修改
不想再增加一个线程去循环读取变量X是否改变,再释放信号量

需求

A线程如何在线程本身识别变量是否改变。未改变:阻塞线程。改变线程:恢复运行
我的想法是:使用while()阻塞线程可行。进入while前获取进入时间,while里不断获取当前时间。判断超时
是否有函数或者功能可以实现,如果有轮子不想自己写了

实际情况

MCU和电机使用CNAOPEN通信。
间隔一定时间,MCU发送这个变量至电机。
间隔一定时间,电机发送这个变量的实际状态至MCU。
改变这个变量值,会时间到达后会发送改变后变量至电机。
目前采用的方法是,mSH命令去改变这个变量值,延时后执行下一步。没有判断电机实际状态是否到达预期。
所以想增加查询实际值再执行下一步。
需要去查询实际状态是否达到预期值,没有达到阻塞线程。达到恢复线程运行,执行下一步。

回帖(2)

王丽

2023-2-1 16:26:02
这个问题。。。不用想就不可能。
不然,Qt 里就不用整那么多 valueChanged 信号了。

要么让他们改代码通知你,要么你自己循环扫描判断。没别的办法
举报

陈伟

2023-2-1 16:26:32
2.jpg
举报

更多回帖

发帖
×
20
完善资料,
赚取积分