dispatch_once和@synchronized的单例模式
来源:互联网 发布:淘宝上利郎代购 编辑:程序博客网 时间:2024/06/04 18:19
@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。
# import "NetworkManager.h"static NetworkManager *network = nil;@implementation NetworkManager+ (NetworkManager *)getNetworkInstance{ @synchronized(self){ if (nil == network){ network = [[NetworkManager alloc] init]; { } return network;}
dispatch_once
+ (id)sharedInstance{ static dispatch_once_t pred; static Instance *obj = nil; dispatch_once(&pred, ^{ obj = [[Instance alloc] init]; }); return obj;}这样的方法有很多优势,首先满足了线程安全问题,其次很好满足静态分析器要求。GCD可以确保以更快的方式完成这些检测,它可以保证block中的代码在任何线程通过dispatch_once调用之前被执行,但它不会强制每次调用这个函数都让代码进行同步控制。实际上,如果你去看这个函数所在的头文件,你会发现目前它的实现其实是一个宏,进行了内联的初始化测试,这意味着通常情况下,你不用付出函数调用的负载代价,并且会有更少的同步控制负载。
0 0
- dispatch_once和@synchronized的单例模式
- IOS-dispatch_once和@synchronized的单例区别
- dispatch_once 单例模式
- iOS 的单例模式 dispatch_once
- dispatch_once创建单例模式
- iOS UI篇 - @synchronized与dispatch_once 创建单例
- 使用dispatch_once实现单例模式
- iOS开发单例模式 dispatch_once
- iOS开发单例模式 dispatch_once
- iOS开发单例模式 dispatch_once
- iOS开发单例模式 dispatch_once
- 使用dispatch_once实现单例模式
- dispatch_once函数之单例模式
- 用dispatch_once实现单例模式
- GCD---dispatch_once实现单例模式
- 单例模式&synchronized
- 使用GCD的dispatch_once创建单例
- dispatch_once方式创建的单例
- php查询当月sql记录
- 使用Android注解来改善代码
- Server Tomcat v7.0 Server at localhost failed to start.
- SAS9.3完全版启动时报错逻辑库“SASHELP”及其解决方法
- 黑马程序员——第七天(线程间通信)
- dispatch_once和@synchronized的单例模式
- Num 3 : ZOJ : 1241 Geometry Made Simple
- Android-DPI-Calculator
- 【Android使用Shape绘制虚线,在4.0以上的手机显示实线】解决方案
- Linux查看磁盘使用情况
- PAT (Basic Level) Practise (中文)1024. 科学计数法 (20) C语言
- Android学习之内容提供者ContentProvider
- 2012年5月SAT香港真题解析
- iOS总结控件一(UILabel)