單核 多核 多執行緒

2021-06-18 14:38:01 字數 1141 閱讀 6412

1、鎖競爭:

單核中,如果單個執行緒取得所,則獲取cpu執行時間,其他等待獲取鎖的執行緒被阻塞。使用了鎖,影響的只是枷鎖和解鎖的耗時,cpu始終執行。

多核中,若2個(更多)執行緒使用同一把鎖,則會導致cpu飢餓。實際還是序列化執行!

2、執行緒分解和執行的區別:

對單核cpu,對客戶端軟體,採用多執行緒,主要是 建立多執行緒將一些計算放在後台執行,而不影響使用者互動操作。(使用者介面 & 其他計算 並行進行)提高使用者的操作效能!

多核中,分別出多個執行緒,不再限於將使用者介面操作和其他計算分離。分解多個執行緒使為了讓計算分配到各cpu上執行。執行執行緒數量與cpu核數有關!如果執行緒數小於核數,某些cpu肯定處於空閒狀態。

3、cpu核負載平衡:

單核中不考慮 負載平衡,各個執行緒計算量相差很大,也不會影響程式總計算時間。

多核中,必須考慮將各個執行緒計算量均衡到各cpu

4、任務排程策略區別:

單核中,任務排程主要考慮分時,某些任務的優先執行!常用:時間片輪轉,優先順序搶占!

多核中,任務排程比單核有新的需求。要考慮 不同任務的耗時,和計算均衡!不能採用簡單的時間片輪轉和優先順序搶占。而總的呼叫作業系統不能掌握。需要程式設計師實現!

5、cpu cache訪問:

cpu讀取cache時,以行為單位讀取。如果2個硬體執行緒的兩塊不同記憶體位於同一cache行。當2個硬體執行緒同時對各自的記憶體進行寫操作,導致2個執行緒同時寫乙個cache行。衝突!!【

偽記憶體問題】

單核機,不存在 偽記憶體問題

多核機,存在偽記憶體問題!想辦法,使不同的記憶體塊對映到不同cache行

6、任務優先順序搶先的區別:

單核cpu中,優先順序搶占很常見的任務排程策略。

多核cpu中,多個核可導致,低優先順序和高優先順序的任務同時執行。需要進一步改進 優先順序排程策略。

7、序列計算與平行計算、分布式計算的區別

單核多執行緒程式設計中,都是序列演算法。用不到平行計算,更用不到分布式計算

多核程式設計中,多採用 平行計算 和 分布式計算

平行計算=並行設計模式+並行演算法

分布式計算複雜度 > 平行計算的複雜度 > 序列計算複雜度

平行計算:只考慮計算並行地執行,不考慮執行緒間的競爭導致cpu飢餓

分布式計算:相比平行計算,能更好解決cpu飢餓,使計算均衡地分配任務到各核心

單核和多核

單核 同步 一件事一件事順序執行,等待的時候也不去做別的事情,就是浪費時間。也不一定,比如有時候,需要獨佔資源時就需要同步機制,比如多執行緒經常會遇到的問題。非同步 非同步切換思想 一件事情等待的時候去做另一件事情來度過浪費掉的時間。多核 同步 沒有意義。非同步 並行 同一件事情可以有兩個核同時執行...

多執行緒程式在多核和單核上執行的不同

1 鎖 在單核上,多個執行緒執行鎖或者臨界區時,實際上只有乙個執行緒在執行臨界區 而核心也只支援乙個執行緒執行,因此不存在衝突。如果某個執行緒持有鎖,那只有其他執行緒不會被排程到cpu上執行,影響的只是持有和釋放鎖的時間,處理器時刻在執行著。但是在多核上執行時,鎖或臨界區會導致其餘處理器空閒而只允許...

多執行緒在單核cpu與多核cpu下如何工作

1.多執行緒在單核和多核cpu上的執行效率問題的討論 a1 多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換那個執行而已,其實並沒有快 反而慢 多個cpu的話就可以在兩個cpu中同時執行了.a2 單核cpu上執行的多執行緒程式,同一時間只能乙個執行緒在跑,系統幫你切換執行緒而已,系統給每...