打印
[技术问答]

freertos线程问题

[复制链接]
723|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
koala889|  楼主 | 2022-10-4 20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


freertos系统中同级的线程中,同时调同一个函数,会怎么办?

意思就是说1号线程调用一个A函数,函数还没有执行完,切到2号线程,又调用A函数,结果会怎么样?

使用特权

评论回复
沙发
软核硬核| | 2022-10-5 20:26 | 只看该作者
如果函数里面没有静态函数或者调用全局变量就没事。

使用特权

评论回复
板凳
软核硬核| | 2022-10-5 20:28 | 只看该作者
等于是调用了A1和A2两个独立的函数。

使用特权

评论回复
地板
V853| | 2022-10-6 08:20 | 只看该作者
调用函数时会开辟一块栈空间执行函数内容,所以只要使用合理,不用太担心。

使用特权

评论回复
5
Undshing| | 2022-10-7 21:26 | 只看该作者
没有静态或者全局变量都行

使用特权

评论回复
6
littlelida| | 2022-10-8 20:46 | 只看该作者
这样的话,优先级和程序逻辑很重要~

使用特权

评论回复
7
tpgf| | 2022-11-4 11:35 | 只看该作者
如果实际应用中出现这个问题的话 那就只能按照先后顺序进行处理了

使用特权

评论回复
8
qcliu| | 2022-11-4 11:53 | 只看该作者
线程中的函数实体实在内存中,而函数中的局部变量则会一次被push到栈中.

使用特权

评论回复
9
drer| | 2022-11-4 12:08 | 只看该作者
需要互斥处理的,一般是函数中有全局变量,有动态申请的空间,有静态局部变量,有需要进程数据循环发送(进程传参数给线程)之类的操作需要进行互斥处理

使用特权

评论回复
10
coshi| | 2022-11-4 13:08 | 只看该作者
如果有操作的变量的话 大概率就会造成混乱

使用特权

评论回复
11
kxsi| | 2022-11-4 13:40 | 只看该作者
应该设定一个全局的标志位进行互斥或者说互锁操作

使用特权

评论回复
12
wiba| | 2022-11-4 14:01 | 只看该作者
设定一个标识量 一旦有函数调用 就给它置位 其他函数如果调用前会判定这个标识是否已经置位 这样就不会重复操作了

使用特权

评论回复
13
Stahan| | 2022-11-5 20:35 | 只看该作者
没有静态或者全局变量都行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

473

帖子

2

粉丝