硬汉嵌入式论坛

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

[FreeRTOS] 请问一下在RTOS中对全局变量的访问

[复制链接]

7

主题

18

回帖

39

积分

新手上路

积分
39
发表于 2020-6-28 08:32:32 | 显示全部楼层 |阅读模式
请教一下大家,在RTOS中对全局变量的访问:如果一个任务只是对全局变量进行读操作,一个任务只是对全局变量进行写操作。这种情况下,需不需要加上互斥量进行保护呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2020-6-28 08:43:36 | 显示全部楼层
加上__IO,防止编译器优化即可

回复

使用道具 举报

7

主题

18

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2020-6-28 20:19:25 | 显示全部楼层
好的,谢谢硬汉。
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
发表于 2020-7-13 10:53:21 | 显示全部楼层
eric2013 发表于 2020-6-28 08:43
加上__IO,防止编译器优化即可

请问硬汉这种方式只适用于单个变量还是数组也适用,如果一个任务对变量进行写,多个变量读,这种方式也适用么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2020-7-13 11:51:48 | 显示全部楼层
老鸟kkk 发表于 2020-7-13 10:53
请问硬汉这种方式只适用于单个变量还是数组也适用,如果一个任务对变量进行写,多个变量读,这种方式也适 ...

都可以的。
回复

使用道具 举报

1

主题

43

回帖

46

积分

新手上路

积分
46
发表于 2020-7-30 13:16:52 | 显示全部楼层
这个我觉得有些情况是不行的。例如你定义了uint64的变量。

回复

使用道具 举报

1

主题

43

回帖

46

积分

新手上路

积分
46
发表于 2020-7-30 13:17:18 | 显示全部楼层
这个我觉得有些情况是不行的。例如你定义了uint64的变量。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2020-8-3 08:40:18 | 显示全部楼层
在嵌入式的应用中,全局变量是大量使用的。 好处是,清晰明了,易于跟踪监控。 虽然,这种说法和现代软件的思路相悖,但是嵌入式和硬件紧密相连,我们更喜欢确定性,而不是自由灵活。
回复

使用道具 举报

34

主题

111

回帖

213

积分

高级会员

程序小白

积分
213
QQ
发表于 2021-1-8 22:14:47 | 显示全部楼层
eric2013 发表于 2020-6-28 08:43
加上__IO,防止编译器优化即可

请问,  如果有多个任务对 同一个全局变量 读,一个任务对 这个全局变量写, 是否也适用?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-1-9 08:48:02 | 显示全部楼层
清风徐来 发表于 2021-1-8 22:14
请问,  如果有多个任务对 同一个全局变量 读,一个任务对 这个全局变量写, 是否也适用?

可以的。
回复

使用道具 举报

1

主题

92

回帖

100

积分

初级会员

积分
100
发表于 2021-1-27 15:25:26 | 显示全部楼层

请教一下,如果写到一半发生了任务调度,这样读出的的数据不就错误了吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 18:26 , Processed in 0.289778 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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