1. 程式人生 > >一、併發的優勢和缺點

一、併發的優勢和缺點

學習內容

併發的優勢和缺點

 

優點

資源利用率更好

程式設計在某些情況下更簡單

程式響應更快

 

缺點

 

1、頻繁的上下文切換

時間片是CPU分配給各個執行緒的時間,因為時間非常短,所以CPU不斷通過切換執行緒,讓我們覺得多個執行緒是同時執行的,時間片一般是幾十毫秒。而每次切換時,需要儲存當前的狀態起來,以便能夠進行恢復先前狀態,而這個切換時非常損耗效能,過於頻繁反而無法發揮出多執行緒程式設計的優勢。通常減少上下文切換可以採用無鎖併發程式設計,CAS演算法,使用最少的執行緒和使用協程。

 

解決方案

無鎖併發程式設計CAS演算法,利用Atomic下使用CAS演算法來更新資料,使用了樂觀鎖,可以有效的減少一部分不必要的鎖競爭帶來的上下文切換

使用最少執行緒:避免建立不需要的執行緒,比如任務很少,但是建立了很多的執行緒,這樣會造成大量的執行緒都處於等待狀態,而且併發在某些情況未必會比序列快。

協程:在單執行緒裡實現多工的排程,並在單執行緒裡維持多個任務間的切換

可以使用Lmbench3測量上下文切換的時長 vmstat測量上下文切換次數

 

2、執行緒安全

個執行緒共享資料時可能會產生於期望不相符的結果。

解決方案:同步機制

 

3、活躍性

某個操作無法繼續進行下去時,就會發生活躍性問題。比如:死鎖、飢餓等問題。