ios中的執行緒安全單例實現
我們這裡重點討論的是執行緒安全,而不是單例的嚴格實現(若需要嚴格實現還需要複寫一些方法,更改一些實現程式碼):
gcd實現:
static AccountManager *sharedAccountManagerInstance = nil;
+ (AccountManager *)sharedManager {
static dispatch_once_t predicate; dispatch_once(&predicate, ^{
sharedAccountManagerInstance = [[AccountManager alloc] init];
});
return sharedAccountManagerInstance;
}
利用系統提供的能力來實現,此處保證^{
sharedAccountManagerInstance = [[self alloc] init];
});在應用程式的生命週期裡只被執行一次;若sharedAccountManagerInstance被外面被手動釋放(arc下無法手動release不存在此問題),則會造成崩潰,崩潰原因時野指標訪問,系統錯誤碼應為exc_bad_access.因此呼叫獲取單例物件者是不應該釋放該單例物件的,這點需要嚴格遵守,單例本身的設計思想也包含了這一點。
雙檢鎖實現:增加的外圍檢查用來提高效率。
static AccountManager *sharedAccountManagerInstance = nil;
+ (AccountManager *)sharedManager
{
if(sharedAccountManagerInstance == nil)
{
@synchronized (self){
if (sharedAccountManagerInstance == nil)
{
sharedAccountManagerInstance = [[AccountManager alloc] init];
}
}
}
return sharedAccountManagerInstance;
}
相關文章
- 單例模式——執行緒安全的兩種實現單例模式執行緒
- 執行緒安全的單例模式執行緒單例模式
- python 執行緒安全的 單例 實現 日誌分級Python執行緒單例
- C++實現一個執行緒安全的單例工廠C++執行緒單例
- c++ 運算子過載、執行緒安全實現單例C++執行緒單例
- 【設計模式】實現執行緒安全單例模式的五種方式設計模式執行緒單例
- ios-UI高階多執行緒 GCD實現單例模式iOSUI執行緒GC單例模式
- 靜態內部類實現的單例模式是執行緒安全的單例模式執行緒
- C++ 執行緒安全的單例模式C++執行緒單例模式
- 不使用synchronized和lock,如何實現一個執行緒安全的單例?synchronized執行緒單例
- Qt 中用Q_GLOBAL_STATIC來實現執行緒安全的單例模式QT執行緒單例模式
- iOS 多執行緒之執行緒安全iOS執行緒
- iOS多執行緒之執行緒安全iOS執行緒
- 單例模式執行緒安全reorder問題單例模式執行緒
- 【iOS – OC】OC基礎-單例的實現 & 提醒自己注意多執行緒問題iOS單例執行緒
- 你的單例模式真的是執行緒安全的嗎?單例模式執行緒
- 設計模式之單例模式(執行緒安全)設計模式單例執行緒
- iOS多執行緒安全-13種執行緒鎖?iOS執行緒
- 多執行緒下的單例執行緒單例
- Java中實現執行緒安全HashSet的幾種方法 | baeldungJava執行緒
- iOS開發基礎——執行緒安全(執行緒鎖)iOS執行緒
- 5招教你實現多執行緒場景下的執行緒安全!執行緒
- Java中實現執行緒的方式Java執行緒
- 關於iOS中的執行緒安全和使用場景iOS執行緒
- 單例模式中可能存在的一些問題(執行緒安全問題)單例模式執行緒
- Map實現執行緒安全的3種方式執行緒
- 如何看待Spring下單例模式與執行緒安全的矛盾Spring單例模式執行緒
- boost中asio網路庫多執行緒併發處理實現,以及asio在多執行緒模型中執行緒的排程情況和執行緒安全。執行緒模型
- Python實現執行緒安全佇列Python執行緒佇列
- java中執行緒安全的集合Java執行緒
- 執行緒安全的 iOS 通用快取-SwiftlyCache執行緒iOS快取Swift
- Java中多執行緒的概述、實現方式、執行緒控制、生命週期、多執行緒程式練習、安全問題的解決...Java執行緒
- C#實現單例項執行C#單例
- singleton模式四種執行緒安全的實現模式執行緒
- Java中如何實現執行緒呢?Java執行緒
- Qt中的多執行緒與執行緒池淺析+例項QT執行緒
- iOS 開發中的多執行緒iOS執行緒
- C++ 靜態變數單例模式的誤會(執行緒安全)C++變數單例模式執行緒