在并發(fā)編程過程中,我們大部分的焦點都放在如何控制共享變量的訪問控制上(代碼層面),但是很少人會關(guān)注系統(tǒng)硬件及 JVM 底層相關(guān)的影響因素。前段時間學(xué)習(xí)了一個牛X的高性能異步處理框架 Disruptor,它被譽為“最快的消息框架”,其 LMAX 架構(gòu)能夠在一個線程里每秒處理 6百萬 訂單!在講到 Disruptor 為什么這么快時,接觸到了一個概念——偽共享( false sharing ),其中提到:緩存行上的寫競爭是運行在 SMP 系統(tǒng)中并行線程實現(xiàn)可伸縮性最重要的限制因素。由于從代碼中很難看出是否會出現(xiàn)偽共享,有人將其描述成無聲的性能殺手。

本文僅針對目前所學(xué)進行合并整理,目前并無非常深入地研究和實踐,希望對大家從零開始理解偽共享提供一些幫助。

偽共享的非標準定義為:緩存系統(tǒng)中是以緩存行(cache line)為單位存儲的,當多線程修改互相獨立的變量時,如果這些變量共享同一個緩存行,就會無意中影響彼此的性能,這就是偽共享。

下面我們就來詳細剖析偽共享產(chǎn)生的前因后果。首先,我們要了解什么是緩存系統(tǒng)。

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式