#import "MyHandle.h" static MyHandle *handle = nil;
@implementation MyHandle
// 传统写法
// 此时如果多个任务并发执行,他就不会满足单例的优点
//+ (MyHandle *)shareMyHandle {
// if (nil == handle) {
// handle = [[MyHandle alloc] init];
// }
// return handle;
//} // 多线程中的写法
+ (MyHandle *)shareMyHandle {
// 在GCD 中保证只执行一次, 用于记录内容是否执行过
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
handle = [[MyHandle alloc] init];
});
return handle;
} @end
相关文章
- Java学习之Java的单例模式
- iOS开发—使用GCD实现多线程(单次或重复执行任务)
- Python 面向对象编程的一些特征 及 单例模式的实现, 父类方法的调用(python2/python3)
- iOS webview 获取html中的图片地址
- 多线程并发(二):聊聊AQS中的共享锁实现原理
- 黑马程序员_ JAVA学习日记—JAVA中的多线程
- ios oc 和 swfit 用dispatch_once 创建单例
- 《ASP.NET1200例》高亮显示ListView中的数据行并自动切换图片
- 多线程并发:以AQS中acquire()方法为例来分析多线程间的同步与协作
- c++ 程序通用多线程单例设计 c++ web 框架设计经验谈