ios中的线程安全单例实现
来源:互联网 发布:淘宝客源码卷皮 编辑:程序博客网 时间:2024/05/29 12:55
我们这里重点讨论的是线程安全,而不是单例的严格实现(若需要严格实现还需要复写一些方法,更改一些实现代码):
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;
}
- ios中的线程安全单例实现
- iOS线程安全单例详解
- C#中的线程安全单例模式
- 单例-线程安全
- iOS UI 21 单例中的线程
- iOS 使用 dispatch_once 创建线程安全的单例
- iOS 单例模式之线程安全demo
- 设计模式中的单例模式(线程安全)
- java 测试单例中的成员方法是否线程安全
- 怎么实现一个线程安全的单例模式呢?
- 一种线程安全的单例模式实现
- 线程安全的单例模式的实现
- 单例模式实现 线程安全的队列 处理
- C++实现线程安全的单例模式
- 线程安全的单例模式 的各种实现 总结
- 这里实现定界加锁线程安全的单例模式
- C++线程安全的单例模式实现
- 线程安全的单例模式java实现
- 仿网易新闻效果源码分析
- linux 查看文件系统
- eclipse中几种加入jar包方式的区别
- Linux 下Sqlite3 的安装及应用
- java泛型List
- ios中的线程安全单例实现
- 未安装C#的Visual Studio语言支持,代码编辑Intellisense将不可用
- linux信号
- linux下vnc设置
- Python自学3:Python的基本类型
- IDE
- wait()、waitpid()及waitid()介绍
- Brocade SAN交换机常用命令
- kafka开发环境搭建