C 效能優化 優化併發

2021-10-21 14:51:38 字數 578 閱讀 3534

第一,減小臨界區的範圍

在臨界區中執行i/o 處理無法提高效能。

第二,限制併發執行緒的數量

我們應當使可執行執行緒的數量少於或等於處理器核心的數量,這樣能夠移除切換上下文的間接開銷。

第三,避免驚群

當有許多執行緒掛起在乙個事件——例如只能服務乙個執行緒的工作——上時就會發生所謂的驚群(thundering herd)現象。當發生這個事件時,所有的執行緒都會變為可執行狀態,但由於只有幾個核心,因此只有幾個執行緒能夠立即執行。

第四,避免鎖護送

當大量執行緒同步,掛起在某個資源或是臨界區上時會發生鎖護送(lock convoy)。這會導致額外的阻塞,因為它們都會試圖立即繼續進行處理,但是每次卻只有乙個執行緒能夠繼續處理,彷彿是在護送鎖一樣。

第五,減少競爭

注意記憶體和i/o 都是資源,複製資源,分割資源,細粒度鎖,無鎖資料結構,資源的除錯,

第六,不要在單核系統上繁忙等待

c++ 的併發特性允許開發人員實現高效能同步原語進行繁忙等待。但是繁忙等待並非總是乙個好主意。

第七,不要永遠等待

第八,自己設計互斥量可能會低效

第九,限制生產者輸出佇列的長度

C 效能優化 優化模式

1.預計算 可以在程式早期,例如設計時 編譯時或是鏈結時,通過在熱點 前執行計算來將計算從熱點部分中移除。2.延遲計算 通過在真正需要執行計算時才執行計算,可以將計算從某些 路徑上移除。3.批量處理 每次對多個元素一起進行計算,而不是一次只對乙個元素進行計算。4.快取 通過儲存和復用昂貴計算的結果來...

效能優化 使用設計模式優化併發程式設計

在我們使用多執行緒程式設計時,很多時候需要根據業務場景設計一套業務功能。其實,在多執行緒程式設計中,本身就存在很多成熟的功能設計模式,學好它們,用好它們,那就是如虎添翼了。今天我就帶你了解幾種併發程式設計中常用的設計模式。執行緒上下文設計模式 這樣的解釋可能有點抽象,我們不妨通過乙個具體的案例,來看...

架構效能優化 nginx配置優化 扛高併發

整理一下之前公司專案的優化配置經驗。預設安裝後的nginx,配置只適合通用場景,需優化配置以適應高併發的場景。一般來說nginx配置檔案中對優化比較有作用的主要有以下幾項 1 nginx程序數,建議按照cpu數目來指定,一般跟cpu核數相同或為它的倍數。worker processes 8 2 為每...