請關(guān)注我的微信公眾號
個人微信公眾號
技術(shù)交流群 (僅作技術(shù)交流):642646237
?請關(guān)注我的頭條號:
使用本地變量優(yōu)化過度競爭
消費者對counts有一些不必要的競爭。
與其所有消費者都共享同一個counts夸楣,不如每個消費者各自維護一個計數(shù)map浓利,再對這些計數(shù)map進行合并捕捂。
代碼
建立了一個相對復(fù)雜的生產(chǎn)者-消費者程序,多個消費者通過一個并發(fā)隊列和一個并發(fā)map進行協(xié)作彼乌,程序中沒有顯式地使用鎖,而是使用了標準庫提供的并發(fā)工具。
采用此方法只是減少了對counts的競爭的頻率玉控,并沒有徹底消除掉。
在最后合并localCounts到counts中的時候狮惜,還是有一定幾率會發(fā)生過度競爭高诺。
并發(fā)程序性能與線程數(shù)的關(guān)系
并行程序起初性能快速線性增長,之后增長趨勢放緩碾篡,最終性能達到極值虱而,線程數(shù)再增加性能則會下降。