iOS——Objective C都有哪些鎖機制
1)NSLock
iOS中對於資源搶佔的問題可以使用同步鎖NSLock來解決,使用時把需要加鎖的程式碼(以後暫時稱這段程式碼為”加鎖程式碼“)放到NSLock的lock和unlock之間,一個執行緒A進入加鎖程式碼之後由於已經加鎖,另一個執行緒B就無法訪問,只有等待前一個執行緒A執行完加鎖程式碼後解鎖,B執行緒才能訪問加鎖程式碼。
2)@synchronized程式碼塊
使用@synchronized解決執行緒同步問題相比較NSLock要簡單一些,日常開發中也更推薦使用此方法。
3)使用GCD解決資源搶佔問題
在GCD中提供了一種訊號機制,也可以解決資源搶佔問題(和同步鎖的機制並不一樣)。
4)擴充套件--控制執行緒通訊
由於執行緒的排程是透明的,程式有時候很難對它進行有效的控制,為了解決這個問題iOS提供了NSCondition來控制執行緒通訊(同前面GCD的訊號機制類似)。
5)iOS中的其他鎖
NSRecursiveLock :遞迴鎖,有時候“加鎖程式碼”中存在遞迴呼叫,遞迴開始前加鎖,遞迴呼叫開始後會重複執行此方法以至於反覆執行加鎖程式碼最終造成死鎖,這個時候可以使用遞迴鎖來解決。使用遞迴鎖可以在一個執行緒中反覆獲取鎖而不造成死鎖,這個過程中會記錄獲取鎖和釋放鎖的次數,只有最後兩者平衡鎖才被最終釋放。
NSDistributedLock:分佈鎖,它本身是一個互斥鎖,基於檔案方式實現鎖機制,可以跨程式訪問。
pthread_mutex_t:同步鎖,基於C語言的同步鎖機制,使用方法與其他同步鎖機制類似。
相關文章
- iOS 開發--Objective-C 反射機制iOSObject反射
- Objective-C block 實現機制ObjectBloC
- 區塊鏈信任機制都有哪些“?區塊鏈
- Objective-C中的記憶體管理機制Object記憶體
- C# 11 都有哪些新特性?C#
- 搶先看!iOS14都有哪些新功能iOS
- iOS冰與火之歌 – Objective-C Pwn and iOS arm64 ROPiOSObject
- Objective-C iOS 開發 建立 合成 一張LivePhotoObjectiOS
- iOS 編寫高質量Objective-C程式碼iOSObjectC程式
- PHP 鎖機制PHP
- SQLite鎖機制SQLite
- iOS編寫高質量Objective-C程式碼(六)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(七)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(八)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(六)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(五)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(一)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(三)iOSObjectC程式
- Mysql鎖機制分析MySql
- 分散式鎖機制分散式
- iOS複雜動畫之抽絲剝繭(Objective C & Swift)iOS動畫ObjectSwift
- 搜狐視訊iOS團隊 Objective-C 編碼規範iOSObject
- Objective-C RuntimeObject
- iOS 簽名機制iOS
- synchronized鎖機制 之 程式碼塊鎖synchronized
- Mysql中的鎖機制——MyISAM表鎖MySql
- 成功的多專案管理都有哪些"制勝之道"?專案管理
- iOS 編寫高質量Objective-C程式碼(一)—— 簡介iOSObjectC程式
- 資料庫鎖機制資料庫
- mysql myisam的鎖機制MySql
- Mysql各種鎖機制MySql
- MySQL效能優化(九)-- 鎖機制之行鎖MySql優化
- 鎖機制到加鎖的必要性
- iOS面試題整理01---- Objective-C 物件相關問題iOS面試題Object物件