【求助】RTX51 Tiny函数的可重入问题

2020-01-12 17:24发布

目前在做的一个项目中,用到RTX51 Tiny,有一个疑问:在一个函数中调用os_wait(),或者os_switch_task()之后,os暂停当前task1,转向另外一个task2,在task2中的执行函数与task1中的函数可能构成Overlay关系吗???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
lcw_swust
2020-01-12 22:26
虽然不了解RTX51 Tiny,但是也遇到过主函数与中断同时调用一个函数的情况,会出现问题,
主要因为编译器用全局变量代替局部变量。
此时要用到 reentrant ,将函数变成可重入,使局部变量放入堆栈中,两个地方同时调用也不会干扰。
(如果函数中用到了全局变量仍要小心)
如:
int fun(char a) reentrant  
{

}

如果要避免两个地方同时调用一个函数,也可以加一个标志用于等待,似乎可以用信号量还是啥?我也不太清楚了。

一周热门 更多>