1. 程式人生 > >go語言多執行緒入門筆記-多執行緒程式設計

go語言多執行緒入門筆記-多執行緒程式設計

首先,搞清楚什麼是執行緒,什麼程序?

建立執行緒(pthread)比建立程序(thread)要簡單多了,你知道為什麼嗎?因為一個程序裡的多個執行緒一定執行的是一個程式,所以共享資源變的簡單。

同時每個執行緒都有唯一的ID,而且是系統分配的,這個ID可以複用,你的程式一定不能與執行緒相關,否則會很麻煩,執行緒ID可以讓我們容易區分不同的程序。執行緒的生命週期與程序非常相似,見下圖:

下面這句話很有意思,我們可以說,時間真的像女人的胸,擠擠總是有的。

每個CPU的執行佇列裡都有兩個優先順序陣列,分別是啟用的優先順序陣列和過期的優先順序陣列,如下圖所示:

需要注意的是,當啟用的優先順序陣列執行完畢後,CPU會兩個陣列對調,顯而易見,原來過期的變成啟用的了。

根據執行緒與核心呼叫實體(KSE)之間的對應關係,執行緒的實現模型有三種:使用者級執行緒模型(N:1),核心級執行緒模型(1:1),兩級執行緒模型(M:N)。一般做系統的,都不會採納兩級執行緒模型,但是go語言實現了兩級執行緒模型。覺得不清楚的,看看下面的圖吧。

暫且寫到這裡,下篇接著記,執行緒的同步。