多線程之GCD,以及自旋鎖OSSpinLock

今天在是用reactivecocoa這個(gè)類庫(kù)的時(shí)候,發(fā)現(xiàn)里面大量的是用自旋鎖.由于之前沒有接觸過,就順道查詢了一下.然后對(duì)它有了一個(gè)大致的認(rèn)識(shí).主要是防止出現(xiàn)競(jìng)爭(zhēng)資源這種情況,和@synchronized類似(在不考慮性能的情況下直接是用synchronized就可以).性能對(duì)比如下:

可以看出OSSpinLock處理效率比synchronized要快很多.如果是頻繁操作,推薦使用.

之后有溫習(xí)一遍GCD的相關(guān)知識(shí),模擬在并發(fā)隊(duì)列里面同時(shí)對(duì)一個(gè)資源賦值,加鎖和不加鎖的區(qū)別:


不加鎖


加鎖之后

通過對(duì)比可以發(fā)現(xiàn),不加鎖的時(shí)候,任務(wù)結(jié)束時(shí)間是隨即亂序的,但是加鎖之后是升序的.

當(dāng)然在異步執(zhí)行的隊(duì)列里面,也可以是用dispatch_barrier_async 確保之前的異步隊(duì)列執(zhí)行完成之后在執(zhí)行后面的block的內(nèi)容.也可以用它防止資源競(jìng)爭(zhēng).

最后編輯于
?著作權(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)容

  • 多線程 在iOS開發(fā)中為提高程序的運(yùn)行效率會(huì)將比較耗時(shí)的操作放在子線程中執(zhí)行,iOS系統(tǒng)進(jìn)程默認(rèn)啟動(dòng)一個(gè)主線程,用...
    郭豪豪閱讀 2,719評(píng)論 0 4
  • 從哪說(shuō)起呢? 單純講多線程編程真的不知道從哪下嘴。。 不如我直接引用一個(gè)最簡(jiǎn)單的問題,以這個(gè)作為切入點(diǎn)好了 在ma...
    Mr_Baymax閱讀 2,902評(píng)論 1 17
  • 前言 iOS開發(fā)中由于各種第三方庫(kù)的高度封裝,對(duì)鎖的使用很少,剛好之前面試中被問到的關(guān)于并發(fā)編程鎖的問題,都是一知...
    喵渣渣閱讀 3,861評(píng)論 0 33
  • 原文:http://www.cocoachina.com/ios/20170707/19769.html 本文主要...
    冬的天閱讀 2,408評(píng)論 0 12
  • 當(dāng)天空有白云飄過;當(dāng)月亮慢慢爬上夜空;當(dāng)夏的天空蟬聲產(chǎn)生響起;當(dāng)秋日梧桐葉落,你是否還在聽著同一首歌? 或許,耳機(jī)...
    LQ木子閱讀 340評(píng)論 0 0

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