• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

互斥信号量未释放,任务被挂起

电子大拿 2020-12-10 浏览量:757
我在多个任务中都会用到采集AD信号的函数,避免多任务同时访问这个函数,用互斥信号量进行保护,遇到的问题就是,其中一个任务再被挂起的时候,有可能信号量还未释放,那么其他任务想访问这个函数的时候,就只能无限等待了,想了个办法就是挂起后人为释放一次信号量,但是使用一段时间后,AD采集的值就乱了。现在暂时想不到什么好办法
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你可以这样写,一个task专门负责ADC采集,其他的任务就是获取它的采集值而已。这样就不会有冲突了。并且ADC的采集优先级最好比其他任务高。这样其他任务就只能以可读的方式来读取ADC值,当然如果设计得当的话,也就是要避免其它两个task读取的时候又被ADC的task抢占。能避免这种情况的话就可以不用互斥量了。
    • 发布于 2020-12-14
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 任务挂起的时候要释放掉它所持有的全部资源,不能在持有锁的时候休眠,这个是多线程编程的要求
    • 发布于2020-12-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

互斥信号量未释放,任务被挂起