iOS各種鎖及線程使用

iOS中的八大鎖解析與使用
iOS底層學(xué)習(xí)之八大鎖的分析

鎖的分類

  • 自旋鎖 busy-waiting(忙等狀態(tài)):線程獲取鎖,發(fā)現(xiàn)鎖被占用,不斷進(jìn)行鎖請(qǐng)求,直到獲取。等待鎖的線程處于忙等狀態(tài)線程并會(huì)占用cpu資源;
  • 互斥鎖 sleep-waiting(休眠狀態(tài)):線程獲取鎖,發(fā)現(xiàn)鎖被占用,就向系統(tǒng)申請(qǐng)鎖空閑時(shí)喚醒他并立刻休眠。等待鎖的線程處于休眠狀態(tài),并不會(huì)占用cpu資源;互斥鎖分為遞歸(可遞歸調(diào)用)、非遞歸;
  • 特殊鎖讀寫鎖;
  • OSSpinLock -- 自旋鎖 iOS10及以后棄用
  • os_unfair_lock -- 互斥鎖 iOS10以后替代OSSpinLock使用
  • NSLock -- 互斥鎖
  • NSCondition -- 互斥鎖
  • NSConditionLock -- 互斥鎖
  • dispatch_semaphore -- 互斥鎖
  • pthread_mutex -- 互斥鎖(可設(shè)置:遞歸)
  • NSRecursiveLock -- 遞歸鎖
  • @synchronized -- 遞歸鎖

pthread_rwlock讀寫鎖

image.png

NSLock、NSCondition、NSConditionLock、NSRecursiveLock的底層實(shí)現(xiàn)都是基于pthread_mutex;

?著作權(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)容

  • 前言:在出現(xiàn)多線程競(jìng)爭(zhēng)數(shù)據(jù)的時(shí)候往往離不開鎖,那么在這里給大家介紹下我們多線程同步技術(shù)的常用鎖有下面這些 常用鎖如...
    王的for閱讀 369評(píng)論 0 0
  • 原創(chuàng):知識(shí)點(diǎn)總結(jié)性文章創(chuàng)作不易,請(qǐng)珍惜,之后會(huì)持續(xù)更新,不斷完善個(gè)人比較喜歡做筆記和寫總結(jié),畢竟好記性不如爛筆頭哈...
    時(shí)光啊混蛋_97boy閱讀 974評(píng)論 0 2
  • 概念 自旋鎖1.1 OSSpinLock1.2 os_unfair_lock1.3 atomic 互斥鎖2.1 p...
    seej閱讀 659評(píng)論 0 0
  • 一、基礎(chǔ)概念 有4個(gè)術(shù)語比較容易混淆:同步、異步、并發(fā)、串行 1.進(jìn)程和線程 進(jìn)程:進(jìn)程是計(jì)算機(jī)中已運(yùn)行程序的實(shí)體...
    666真666閱讀 1,358評(píng)論 0 7
  • 線程安全:多線程操作共享數(shù)據(jù),不會(huì)造成意想不到的問題鎖的意義:為了線程安全 鎖的分類 自旋鎖 busy-waiti...
    寸光片靜閱讀 1,960評(píng)論 0 3

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