1. 程式人生 > >關於linux c 多執行緒排程執行順序

關於linux c 多執行緒排程執行順序

最近在學習linux 下c語言的多執行緒排程,在博主李亞超的文章Linux C 多執行緒執行順序問題(原連結:http://blog.csdn.net/harry_lyc/article/details/6055734#reply)一文中的下面回覆有人探討到執行緒之間是通過時間片排程的,也就是說當某一個執行緒的時間片用完則會自動呼叫到其他的執行緒。

我實驗了一下,確實如此,最終的列印資訊如下:

thread_one starting
thread_one created
thread_two starting
thread_two created
I am two. loop 0
I am two. loop 1
I am two. loop 2


I am two. loop 3
I am two. loop 4
I am two. loop 5
Main thread begins loop
I am one. loop 0
I am one. loop 1
I am one. loop 2
I am one. loop 3
I am one. loop 4
I am one. loop 5
---------Main thread is done for loop----------
Main thread will sleep 1 S

可以發現,主執行緒開啟了兩個子執行緒之後,顯示子執行緒 2 在執行,然後主執行緒執行,但是時間片用完之後,子執行緒 1 執行,然後再是主執行緒執行,結束loop。

但是其中順序的先後仍然不是十分清楚,搞懂之後再來進行補充。

----- 2017.12.23-----

執行緒的順序暫時可以認為是隨機的,除非利用條件變數進行限定,否則順序無法確定。