1. 程式人生 > >C#:執行緒(1):什麼是執行緒?我們為什麼要使用執行緒?

C#:執行緒(1):什麼是執行緒?我們為什麼要使用執行緒?

最近在看公司上一個專案的原始碼,讓我感覺非常困惑的是,原始碼中使用了很多多執行緒的內容,所以給我的感覺是執行緒一直跳來跳去的,讓我感覺到很困惑。於是我就寫了這篇部落格,希望能夠更好的理解執行緒有關的內容。

一:什麼是執行緒

執行緒是和程序經常放在一起比較的兩個概念。按照我的理解,執行緒和程序並沒有本質的區別,都是對CPU呼叫的單位,其區別只是在於對CPU呼叫的時間尺度的大小。按照我淺顯的理解,程序就是編譯器編譯出來的一個exe可執行檔案,exe檔案向作業系統申請cpu的計算資源,申請到之後再按照執行緒的形式把作業系統給的計算資源分配出去。而計算資源的表現形式就是cpu用於計算的時間。

換句話說,程序把作業系統給出的cpu資源進行劃分,執行緒再將程序擁有的資源進一步劃分。

二:為什麼要使用多執行緒

按照我在網上看到的一些文章的說法,多執行緒是為了處理多併發狀態,按照我的理解是說程式中存在著多種資料輸入方式,每種輸入方式對應著不同的處理方法,而其中一些輸入方式資料讀寫和處理更頻繁,而另外一些輸入方式資料讀寫和處理很少發生。這種情況下,我就可以使用多執行緒的方法進行處理,對於讀寫頻繁的資料,我用更多的cpu資源進行處理,對於讀寫不頻繁的資料,我用較少的cpu資源進行處理。

需要注意的一點是,執行緒的劃分和來回切換本身會消耗cpu資源,因此使用執行緒時要注意。