多執行緒學習(三)

2021-08-01 22:43:37 字數 363 閱讀 1011

1. 程序有狀態,單執行緒程序的狀態與主線程的狀態同義

2. 如果主線程掛起,則程序掛起

3. 單如果程序擁有多個執行緒,則所有執行緒阻塞,只有乙個啟用,則是啟用。讓程序掛起,則所有執行緒掛起

執行緒的實現模型:

使用者執行緒,核心級執行緒,混合執行緒

核心執行緒由作業系統管理,程序可以有多個執行緒

posix_spawn 建立多程序,用多個cpu來縮減任務

pthread_create 進行建立執行緒

std::lock 可以一次鎖住多個鎖

可以用層次鎖防止死鎖

unqiue_lock是更為靈活的鎖 用std::defer來推遲上鎖的時間

同時可以和std:lock混合使用

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

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

C 多執行緒學習 三 阻塞

阻塞 如果執行緒在執行由於某種原因導致暫停,name就認為該執行緒被阻塞了。例如 在sleep和join等其他執行緒結束 被阻塞的執行緒會立即將其處理器的時間片生成給其他執行緒,從此就不在消耗處理器時間,直到滿足其阻塞條件為止。可以通過threadstate這個狀態判斷執行緒是否處於被阻塞狀態 bo...

C 多執行緒學習筆記三

thread 乙個非同步任務開啟乙個thread,具有專有性 threadpool 開啟非同步任務只需要向其借用執行緒,使用完後歸還 threadpool.queueuserworkitem obj new func string hello world console.writeline 主線程 ...