一、併發的優勢和缺點
阿新 • • 發佈:2019-01-05
學習內容
併發的優勢和缺點
優點
資源利用率更好
程式設計在某些情況下更簡單
程式響應更快
缺點
1、頻繁的上下文切換
時間片是CPU分配給各個執行緒的時間,因為時間非常短,所以CPU不斷通過切換執行緒,讓我們覺得多個執行緒是同時執行的,時間片一般是幾十毫秒。而每次切換時,需要儲存當前的狀態起來,以便能夠進行恢復先前狀態,而這個切換時非常損耗效能,過於頻繁反而無法發揮出多執行緒程式設計的優勢。通常減少上下文切換可以採用無鎖併發程式設計,CAS演算法,使用最少的執行緒和使用協程。
解決方案
無鎖併發程式設計CAS演算法,利用Atomic下使用CAS演算法來更新資料,使用了樂觀鎖,可以有效的減少一部分不必要的鎖競爭帶來的上下文切換
使用最少執行緒:避免建立不需要的執行緒,比如任務很少,但是建立了很多的執行緒,這樣會造成大量的執行緒都處於等待狀態,而且併發在某些情況未必會比序列快。
協程:在單執行緒裡實現多工的排程,並在單執行緒裡維持多個任務間的切換
可以使用Lmbench3測量上下文切換的時長 vmstat測量上下文切換次數
2、執行緒安全
個執行緒共享資料時可能會產生於期望不相符的結果。
解決方案:同步機制
3、活躍性
某個操作無法繼續進行下去時,就會發生活躍性問題。比如:死鎖、飢餓等問題。