ios的11种锁

2019-11-13  本文已影响0人  huoshe2019

一、自旋锁和互斥锁区别

自旋锁: 忙等待。即在访问被锁资源时,调用者线程不会休眠,而是不停循环在那里,直到被锁资源释放
互斥锁: 会休眠。即在访问被锁资源时,调用者线程会休眠,此时cpu可以调度其它线程工作,直到被锁资源释放,此时会唤醒休眠线程。

二者相同点:
都能保证同一时间只有一个线程访问共享资源。都能保证线程安全。

二、OSSpinLock(自旋锁)

三、os_unfair_lock(互斥锁)

os_unfair_lock

四、pthread_mutex(互斥锁)

pthread_mutex

备注:
pthread_mutex可以有3个状态,一般常用的是2个状态:normal和recursive

五、pthread_mutex-递归锁

pthread_mutex-递归锁

六、pthread_mutex – 条件

pthread_mutex – 条件

七、NSLock(互斥锁)

NSLock协议 NSLock初始化

八、NSRecursiveLock(递归锁)

九、NSCondition(条件锁)

十、NSConditionLock(条件锁)

十一、dispatch_semaphore

dispatch_semaphore

十二、dispatch_queue

十三、@synchronized

小结:

十四、自旋锁、互斥锁比较

14.1、什么情况使用自旋锁比较划算?

14.2、什么情况使用互斥锁比较划算?

十五、atomic误解

只能保证set和get方法是原子操作,是安全的。但是,你使用对象时,这个是不受保护的

十六、高效的读写

使用dispatch_barrier_async

十七、并发数组崩溃解决方案

十八、小知识点

十九、锁的性能对比

锁的性能对比
上一篇 下一篇

猜你喜欢

热点阅读