今天在是用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).