嵌入式学习小组
直播中

王杰

7年用户 739经验值
私信 关注

请问ucos多任务使用全局变量什么时候需要关中断或者关调度?

STM32上用ucos ,有的时候不方便用邮箱 和队列 只能用全局变量,那么问题来了,因为操作全局变量的时候有时是多条汇编指令,如果现在中断来了,进行任务调度的话就破坏了该全局变量,结果不可预料,
之前只要操作全局变量我就把任务调度关掉,操作完之后就打开 ,我现在不太清楚STM32程序编译好之后对全局变量的哪些操作时单条指令就可以完成的? 这样就不用关调度了。谢谢大家

回帖(4)

杜文渊

2019-10-23 08:34:23
全局变量是共享资源,还是关中断或者调度器上锁。应该不会破坏指令的完整性的
举报

申根换

2019-10-23 08:52:31
加抢占式内核后,任务切换及中断均会异步中断代码运行,多进程访问会引起同时访问的问题,因而引入信号量及互斥,以优化多数情况不出现并发阻塞,单进程资源不受此限。
举报

孙奕

2019-10-23 09:13:57
谢谢谢谢谢谢
举报

王军

2019-10-23 09:27:11
也就是说,涉及到全局变量赋值的时候,都是可以通过加开关中断来防止对全局变量的破坏。
举报

更多回帖

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