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 Runtime 機制Object
- Objective-C中的記憶體管理機制Object記憶體
- iOS 6 Objective-C 速成iOSObject
- C# 11 都有哪些新特性?C#
- IOS Objective-C屬性解析iOSObject
- 搶先看!iOS14都有哪些新功能iOS
- Objective-C 和 C++ 的區別有哪些?ObjectC++
- 【IOS】Objective-C編碼規範iOSObject
- PHP 鎖機制PHP
- SQLite鎖機制SQLite
- Mysql鎖機制MySql
- Oracle鎖機制Oracle
- java鎖機制Java
- oracle 鎖機制Oracle
- SQL鎖機制SQL
- iOS Objective C開發怎麼入門?iOSObject
- iOS冰與火之歌 – Objective-C Pwn and iOS arm64 ROPiOSObject
- Mysql鎖機制分析MySql
- Enqueue 鎖定機制ENQ
- MS SQL鎖機制SQL
- oracle鎖機制研究Oracle
- mysql的鎖機制MySql
- 分散式鎖機制分散式
- 上海python培訓機構都有哪些?Python
- 成功的多專案管理都有哪些"制勝之道"?專案管理
- [鎖機制] 鎖相關查詢
- iOS學習筆記之 Objective-C (三)iOS筆記Object
- iOS開發系列—Objective-C之Foundation框架iOSObject框架
- iOS開發系列--Objective-C之KVC、KVOiOSObject
- iOS分享機制iOS
- iOS推送機制iOS
- Mysql中的鎖機制——MyISAM表鎖MySql
- synchronized鎖機制 之 程式碼塊鎖synchronized
- 伺服器經常當機都有哪些原因伺服器
- 資料庫鎖機制資料庫