浅谈:OC都有哪些锁机制

1:NSLock  对于资源抢占问题我们可以考虑使用同步锁NALock来解决,使用时把需要加锁的代码放到NSLock的lock和unlock之间,一个线程A进入加锁代码以后,另一个线程B就无法访问了,只能等线程A执行完加锁代码后解锁,B线程才能访问加锁代码。

2:@Synchronized代码块 (相比NSlock简单一点 也是解决同步线程问题)

3:使用GCD解决资源抢占问题 -GCD提供一种信号机制,(和同步锁的机制并不一样)

4:扩展-控制线程通信   由于线程的调度时透明的,程序有时候很难对他进行有效的控制,iOS提供了NSCondition来控制线程通信(同GCD信号机制类似)

5:其他锁

NSRecursiveLock:递归锁 有时候加锁代码中存在递归调用,递归开始前加锁,递归开始调用后重复执行此方法以至于加锁代码照成死锁

NSDistributedLock:分布锁,它本身时一个互斥锁,基于文件方式实现锁机制,可以跨进程访问

pthread_mutex_t:同步锁,基于C语言的同步锁机制,使用方法与其他同步锁机制类似

https://www.jianshu.com/p/c6661d632160 面试题目

你可能感兴趣的:(浅谈:OC都有哪些锁机制)