开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
c, ThreadX
问题(Question):
我在ThreadX这平台上建立了两个thread,
其中一个thread,命名为thread#A,它跑的code如下:
threadA_entry()
{
while(1)
{;}
}
另一个thread,命名为threadB,它跑的code如下:
threadB_entry()
{
while(1)
{
pintf("\nI am threadB")
}
}
结果程式跑起来,我发现console不会显示"I am threadB"的讯息,
看起来似乎是因为threadA卡在while loop里面了.
但是如果我把threadA的内容改成如下:
threadA_entry()
{
while(1)
{
pintf("\nI am threadA")
}
}
结果程式跑起来,我发现console会先显示几行"I am threadA"的讯息,
然后再显示几行"I am threadB"的讯息.
然后再继续显示几行"I am threadA"的讯息.
然后再显示几行"I am threadB"的讯息.
不断的轮流显示这两种讯息...
看得出来threadA跟threadB他们轮流执行.
我的问题是:
为什么threadA没有加printf讯息时,
它就会一直占用执行权而不让给threadB,
但是只不过加一个printf讯息,就会愿意跟threadB共享执行权力呢?
为什么多加一个printf讯息,结果就差这么多呢?
谢谢...