iOS 进阶文集

iOS 高级面试剖析课程-锁

2018-09-04  本文已影响8人  繁华落尽丶lee
多线程.png

课程: 新浪微博资深大牛全方位剖析 iOS 高级面试

在iOS多线程中,经常会出现资源竞争和死锁的问题。本节将学习iOS中不同的锁。

iOS当中有哪些锁?

@synchronized 常用于单例
atomic 原子性
OSSpinLock 自旋锁
NSRecursiveLock 递归锁
NSLock 
dispatch_semaphore_t 信号量
[lock lock]; //加锁
// 关键部分
[lock unlock]; // 解锁
// 创建信号量结构体对象,含有一个int成员
dispatch_semaphore_create(1);
// 先对value减一,如果小于零表示没有资源可以访问。通过主动行为进行阻塞。
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
// value加1,小于等零表示有队列在排队,通过被动行为进行唤醒
dispatch_semaphore_signal(semaphore);

以上是iOS中的锁,如果想深入研究可以查看下面这些文章:
正确使用多线程同步锁@synchronized()
深入理解iOS开发中的锁
Object-C 多线程中锁的使用-NSLock
不再安全的OSSpinLock

小结

上一篇 下一篇

猜你喜欢

热点阅读