硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2013|回复: 3
收起左侧

[其它] 多个函数访问同一个变量的问题

[复制链接]

3

主题

9

回帖

18

积分

新手上路

积分
18
发表于 2021-7-26 14:47:19 | 显示全部楼层 |阅读模式
之前设计程序的时候,经常出现以下情况。
1. 在主程序中赋值,然后在定时器中断程序中递减或者递增。
2. 在高优先级中断程序中赋值,在低优先级中断程序中递减或者递增。
现在想到可能会出现多个进程去改写同一个变量的问题,该怎么样保护呢?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2021-7-26 17:08:05 | 显示全部楼层
开关中断。
回复

使用道具 举报

335

主题

2039

回帖

3049

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3049
发表于 2021-7-27 10:00:44 | 显示全部楼层
我认为没有什么问题。这是很常见的情况。 赋值比较简单,不会有异常,主要是递增或者递减,需要先判断数值范围再执行操作就好。
回复

使用道具 举报

2

主题

23

回帖

29

积分

新手上路

积分
29
发表于 2021-7-27 10:53:03 | 显示全部楼层
搞个锁定位,某个函数开始操作这个变量就把锁定位置位,操作完清除。任何函数要用这个变量之前要查询锁定为是否被置位,如果置位就等待。或者启用函数优先级排序,如果对时序有很高的要求,就再搞个缓存什么的,暂存进去,在中断中等待,当然这就更复杂了,视情况使用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 02:28 , Processed in 0.199218 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表