国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

無鎖隊(duì)列實(shí)現(xiàn)原理 多線程編程的時(shí)候,使用無鎖結(jié)構(gòu)會(huì)不會(huì)比有鎖結(jié)構(gòu)更加快?

多線程編程的時(shí)候,使用無鎖結(jié)構(gòu)會(huì)不會(huì)比有鎖結(jié)構(gòu)更加快?這是毫無疑問的,因?yàn)榫€程鎖定是資源密集型的!那么,如何避免鎖的性能下降呢?1、從業(yè)務(wù)上避免大量鎖結(jié)構(gòu)!2. 使用ThreadLocal,可以保證每

多線程編程的時(shí)候,使用無鎖結(jié)構(gòu)會(huì)不會(huì)比有鎖結(jié)構(gòu)更加快?

這是毫無疑問的,因?yàn)榫€程鎖定是資源密集型的

!那么,如何避免鎖的性能下降呢?

1、從業(yè)務(wù)上避免大量鎖結(jié)構(gòu)

!2. 使用ThreadLocal,可以保證每個(gè)線程中的數(shù)據(jù)不會(huì)互相污染

!3. 如果讀多寫少,請使用讀寫鎖

!4. 自旋鎖將挑戰(zhàn)CPU,盡管它是一個(gè)線程時(shí)間很少的鎖

!5. 鎖的粒度應(yīng)該盡可能?。喝绻i可以在方法中,就不應(yīng)該占用整個(gè)方法

當(dāng)前的無鎖設(shè)計(jì)得益于CPU對CAS操作的支持。因此,如果您想了解無鎖設(shè)計(jì),您應(yīng)該首先了解什么是CAS。

CAS是compare and swap的縮寫,中文翻譯為“compare and exchange”。它的實(shí)現(xiàn)如下:有三個(gè)操作數(shù),內(nèi)存值V、舊的期望值a和要修改的新值B。當(dāng)且僅當(dāng)期望值與內(nèi)存值相同時(shí),將內(nèi)存值V更改為B,否則將不執(zhí)行任何操作。

下面是一個(gè)解釋CAS算法的示例。假設(shè)有兩個(gè)線程T1和T2同時(shí)訪問同一變量10。因此,他們會(huì)將主內(nèi)存的值復(fù)制到自己的工作內(nèi)存空間中,因此T1和T2線程的預(yù)期值是10。

假設(shè)T1和T2競爭時(shí),T1成功地將變量值更改為11,然后將其寫入內(nèi)存。當(dāng)T2執(zhí)行更新時(shí),發(fā)現(xiàn)內(nèi)存值已更改為11,這與預(yù)期值10不一致。也就是說,更新失敗,然后重新執(zhí)行前面的操作。

CAS操作類似于提交重試模式。當(dāng)同步?jīng)_突發(fā)生的幾率較小時(shí),系統(tǒng)的性能會(huì)有很大的提高。

雖然CAS有效地解決了原子操作問題,但仍然存在三個(gè)問題:ABA問題、spin-CAS循環(huán)時(shí)間長、開銷大、一個(gè)CAS只能保證一個(gè)變量的原子操作。針對這三個(gè)問題,不同的語言給出了解決方案。如果您想了解更多,可以查詢您關(guān)注的解決方案。

由于缺乏硬件知識,如果您想知道CPU是如何實(shí)現(xiàn)的,可以查看CPU的相關(guān)信息。