dispatch_semaphore_t(信号锁)
NSLock(锁)
NSConditionLock(条件锁)
@synchronized (TARGET){//code}
三种锁的创建:
三种锁的创建方式都比较简单、dispatch_semaphore_t当value只有0和1的时候其实可以看成一种互斥锁、这个和NSlock的作用基本相同。NSConditionLock可以说是这三个中比较强大的一种锁了、因为Condition的存在我们可以进行多条件Condition的控制、当然当Condition只有0和1两种情况时,其实三者没有太多的区别(内部原理不清楚哦!!!据说dispatch_semaphore_t的效率更高、不过确实好多的三方框架使用的就是dispatch_semaphore_t进行的锁控制)。
锁的使用:
我们先创建一个环境、两个线程执行不同的任务、但是两个线程是交替执行的也就是线程A->线程B->线程A->线程B......一直循环进行。
上代码:
工作线程A:
工作线程B:
case1、case2、case3是三种锁的简单使用方式、这样便可以做到线程A和线程B在同步切换进行工作。