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 執行緒 執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 ...