開發平台(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訊息,結果就差這麼多呢?
謝謝...