我有一个线程,它执行函数调用,
Thread 1()
{
while(1)
{
msg = msgreceive();
condn= msg->condn;
switch(condn)
{
case 0:
//do sonmething
break;
case 1:
printf("case_1");
function2()
break;
}
}
}
function 2()
{
printf("fn2_Start");
//Do something
function 3();
printf("fn2_end");
}
fucntion3()
{
printf("fn3_Start");
//Do something
printf("fn3_end");
}
通常我以这种方式获得 printf 痕迹,
case_1
fn2_Start
fn3_Start
fn3_end
fn2_end
case_1
fn2_Start
fn3_Start
fn3_end
fn2_end
....
....
...
但从长远来看,有时我会以这种方式获得痕迹
case_1
fn2_tart
fn2_start
fn2 start
case 1
case 1
这与嵌入式 RTOS 设备环境有关。(MQX) 语言 - C 无论如何,我们是否可以怀疑为什么系统会以这种方式运行。当系统负载重且运行时内存使用量约为 93% 时,就会发生这种情况。