C 多執行緒學習筆記三

2021-10-18 09:55:58 字數 936 閱讀 2737

thread => 乙個非同步任務開啟乙個thread,具有專有性

threadpool => 開啟非同步任務只需要向其借用執行緒,使用完後歸還

threadpool.

queueuserworkitem

((obj)

=>

,new

func

<

string

>((

)=>

"hello world"))

;console.

writeline

("主線程:"

+ thread.currentthread.managedthreadid)

;console.

readkey()

;

10個任務,用thread來做,需要開啟10個thread,如果用threadpool來做,只需要將10個任務交給執行緒池。

thread的解析函式如下:

~

thread()

從析構函式看到this.internalfinalize(); 就是說銷毀之後,先進入終結器,執行緒雖然銷毀,但是沒有被gc(garbage collection)**,該佔的資源還是會佔。而使用threadpool後不會有死執行緒,而都是預設初始化的。

工作執行緒:給一般的非同步任務執行,不涉及到網路,檔案這些io操作【開 發者呼叫】

io執行緒:一般用在檔案,網路io上。【clr呼叫】

threadpool可以用8個執行緒來解決 thread 10個執行緒做的事情,節省了空間時間。

時間 => 通知各個託管和非託管的dll

空間 => teb,osthread結構,堆疊

C 多執行緒基礎學習筆記(三)

一 detach 大坑 由監檢視可知,實參n和形參a的位址並不同,所以實際是值傳遞,並因此最好不要用引用,直接用值傳遞就行了。主線程的str m和str的位址卻相同,那麼當子執行緒和主線程分離時,就會出現問題。這裡講乙個改進的方法,把形參char str改成const string str,即把傳進...

執行緒池 多執行緒學習筆記(三)

執行緒池產生原因 建立很多執行緒造成的兩個問題 1.構建乙個新的執行緒會涉及到與作業系統的互動,會消耗一定的系統資源,當使用完這些新建立的執行緒後,執行緒就會被銷毀,然後當我們再建立的時候就會再次消耗系統資源,所以如果建立很多生命期很短的執行緒,就會消耗很大的系統資源,甚至給系統帶來很大的壓力。2....

C 多執行緒學習筆記

一 基本概念 bi d.z9k l b 0 程序 當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。q7 j ka ik z b0 執行緒 執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 ...