dispatch_semaphore_t(信號(hào)鎖)
NSLock(鎖)
NSConditionLock(條件鎖)
@synchronized (TARGET){//code}
三種鎖的創(chuàng)建:
三種鎖的創(chuàng)建方式都比較簡單、dispatch_semaphore_t當(dāng)value只有0和1的時(shí)候其實(shí)可以看成一種互斥鎖、這個(gè)和NSlock的作用基本相同验夯。NSConditionLock可以說是這三個(gè)中比較強(qiáng)大的一種鎖了、因?yàn)镃ondition的存在我們可以進(jìn)行多條件Condition的控制、當(dāng)然當(dāng)Condition只有0和1兩種情況時(shí),其實(shí)三者沒有太多的區(qū)別(內(nèi)部原理不清楚哦!!麻献!據(jù)說dispatch_semaphore_t的效率更高、不過確實(shí)好多的三方框架使用的就是dispatch_semaphore_t進(jìn)行的鎖控制)猜扮。
鎖的使用:
我們先創(chuàng)建一個(gè)環(huán)境勉吻、兩個(gè)線程執(zhí)行不同的任務(wù)、但是兩個(gè)線程是交替執(zhí)行的也就是線程A->線程B->線程A->線程B......一直循環(huán)進(jìn)行旅赢。
上代碼:
工作線程A:
工作線程B:
case1齿桃、case2、case3是三種鎖的簡單使用方式煮盼、這樣便可以做到線程A和線程B在同步切換進(jìn)行工作短纵。