自旋鎖和互斥鎖的區(qū)別

  • 相同點(diǎn)
    都能保證同一時(shí)間內(nèi)只有一個(gè)線程訪問共享資源,都能保證線程安全

  • 不同點(diǎn)
    互斥鎖:如果共享數(shù)據(jù)已經(jīng)有其他線程加鎖了,線程就會(huì)就如休眠狀態(tài)等待,一袋訪問的資源解鎖,則等待資源的線程立即執(zhí)行

自旋鎖:如果共享數(shù)據(jù)已經(jīng)有其他線程加鎖了,線程會(huì)以死循環(huán)的方式等待鎖,一單被訪問的資源被解鎖,則等待資源的線程會(huì)立即執(zhí)行

自旋鎖的效率高于互斥鎖

加了互斥鎖的代碼,當(dāng)新線程訪問時(shí),如果發(fā)現(xiàn)其他線程正在執(zhí)行鎖定的代碼,新線程就會(huì)進(jìn)行休眠

加了自旋鎖,當(dāng)新線程訪問代碼時(shí),如果發(fā)現(xiàn)有其他線程正在執(zhí)行鎖定的代碼,新線程就會(huì)死循環(huán)的方式,一直等待鎖定的代碼執(zhí)行完成,相當(dāng)于不停常識(shí)執(zhí)行代碼,比較消耗性能

nonatomic 非原子屬性,同一時(shí)間可以有很多線程讀和寫

atomic 原子屬性,同一時(shí)間只能有一個(gè)線程寫入,但可以有多個(gè)線程去取值,atomic本來就有一把鎖(自旋鎖)

atomic 線程安全,需要消耗大量資源
nonatomic 非線程安全,效率更高,一般使用nonatomic

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先借鑒一張ibireme各種鎖性能對(duì)比圖鎮(zhèn)樓 自旋鎖與互斥鎖的區(qū)別 從實(shí)現(xiàn)原理上來講,互斥鎖屬于sleep-wa...
    whlpkk閱讀 8,498評(píng)論 0 16
  • POSIX threads(簡(jiǎn)稱Pthreads)是在多核平臺(tái)上進(jìn)行并行編程的一套常用的API。線程同步(Thre...
    北辰青閱讀 1,061評(píng)論 0 1
  • 自旋鎖是一種互斥鎖的實(shí)現(xiàn)方式而已,相比一般的互斥鎖會(huì)在等待期間放棄cpu,自旋鎖(spinlock)則是不斷循環(huán)并...
    開發(fā)者老岳閱讀 33,427評(píng)論 0 7
  • 自旋鎖和互斥鎖相同點(diǎn):都能保證同一時(shí)間只有一個(gè)線程訪問共享資源。都能保證線程安全。不同點(diǎn):互斥鎖:如果共享數(shù)據(jù)已經(jīng)...
    云海綻放閱讀 700評(píng)論 0 0
  • 自旋鎖和互斥鎖 相同點(diǎn):都能保證同一時(shí)間只有一個(gè)線程訪問共享資源。都能保證線程安全。 不同點(diǎn): 互斥鎖:如果共享數(shù)...
    FengxinLi閱讀 1,811評(píng)論 0 2

友情鏈接更多精彩內(nèi)容