iOS开发线程同步技术-锁
概覽
1,什么是鎖(臨界區(qū))?
2,常用的鎖有哪些?
3,相關鏈接
什么是鎖(臨界區(qū))
臨界區(qū):指的是一塊對公共資源進行訪問的代碼,并非一種機制或是算法。
常用的鎖有哪些?
互斥鎖:是一種用于多線程編程中,防止兩條線程同時對同一公共資源(比如全局變量)進行讀寫的機制。該目的通過將代碼切片成一個一個的臨界區(qū)而達成。
NSLock;pthread_mutex;@synchronized
自旋鎖:是用于多線程同步的一種鎖,線程反復檢查鎖變量是否可用。由于線程在這一過程中保持執(zhí)行,因此是一種忙等待。一旦獲取了自旋鎖,線程會一直保持該鎖,直至顯式釋放自旋鎖。 自旋鎖避免了進程上下文的調度開銷,因此對于線程只會阻塞很短時間的場合是有效的。
OSSpinLock;os_unfair_lock
讀寫鎖:是計算機程序的并發(fā)控制的一種同步機制,也稱“共享-互斥鎖”、多讀者-單寫者鎖) 用于解決多線程對公共資源讀寫問題。讀操作可并發(fā)重入,寫操作是互斥的。 讀寫鎖通常用互斥鎖、條件變量、信號量實現。
pthread_rwlock
遞歸鎖:遞歸鎖有一個特點,就是同一個線程可以加鎖N次而不會引發(fā)死鎖。
NSRecursiveLock;pthread_mutex(recursive)
條件鎖:就是條件變量,當進程的某些資源要求不滿足時就進入休眠,也就是鎖住了。當資源被分配到了,條件鎖打開,進程繼續(xù)運行。
NSCondition;NSConditionLock;
信號量:是一種更高級的同步機制,互斥鎖可以說是semaphore在僅取值0/1時的特例。信號量可以有更多的取值空間,用來實現更加復雜的同步,而不單單是線程間互斥。
dispatch_semaphore;
相關鏈接
https://blog.csdn.net/Deft_MKJing/article/details/79513500
https://www.jianshu.com/p/938d68ed832c
轉載于:https://www.cnblogs.com/Lanht/p/10167609.html
總結
以上是生活随笔為你收集整理的iOS开发线程同步技术-锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 强制刷新组件
- 下一篇: 弹窗后网页不可操作