二次封装的GCD使用
来源:互联网 发布:中远网络陈大龙 编辑:程序博客网 时间:2024/06/07 14:28
http://blog.devtang.com/2012/02/22/use-gcd/ 唐巧对于原生GCD的理解
串行队列 & 并发队列
//创建队列
GCDQueue *queue = [[GCDQueue alloc] initConcurrent]; //initSerial 串行队列 initConcurrent 并发队列
GCD线程组
//等线程1和线程2执行完了之后,执行线程3
GCDGroup *group = [[GCDGroup alloc] init];
GCDQueue *queue = [[GCDQueue alloc] initConcurrent];
[queue execute:^{
sleep(1);
NSLog(@"线程1开始执行");
} inGroup:group];
[queue execute:^{
sleep(3);
NSLog(@"线程2开始执行");
} inGroup:group];
[queue notify:^{
NSLog(@"线程3开始执行");
} inGroup:group];
GCD定时器
/**
* GCDTimer 精准度比NSTimer低。
如果NSTimer用在改变UITableView上会出现一些问题,这个使用GCDTimer就没有问题
*
*/
self.gcdTimer = [[GCDTimer alloc] initInQueue:[GCDQueue mainQueue]];
[self.gcdTimer event:^{
NSLog(@"GCD定时器");
} timeInterval:NSEC_PER_MSEC];
[self.gcdTimer start];
GCD延时执行
// GCD延时执行操作缺点:延时精确度不是特别高,而且无法取消延时操作。
// 优点:代码简介,简练
//NSThread方式精确度高,并且可以取消延时操作
//缺点:写代码比较麻烦。
//NSThread方式的延时执行方式
[self performSelector:@selector(thradEvent:) withObject:self afterDelay:2.0f];
//取消延时执行操作
[NSObject cancelPreviousPerformRequestsWithTarget:self];
//GCD方式的延时执行操作
[GCDQueue executeInMainQueue:^{
NSLog(@"GCD线程事件");
} afterDelaySecs:2.0f];
- (void)thradEvent:(id)sender{
NSLog(@"线程事件");
}
GCD信号组
/**
* 线程1和线程2同时执行线程。当线程2执行到wait,那么就会线程阻塞。当线程1发送信号的时候,然后线程2才继续执 行。 也就是把异步转化为同步线程。
*/
GCDSemaphore *semaphore = [[GCDSemaphore alloc] init];
[GCDQueue executeInGlobalQueue:^{
//发送信号
[semaphore signal];
NSLog(@"线程1");
}];
[GCDQueue executeInGlobalQueue:^{
//等待信号
[semaphore wait];
NSLog(@"线程2");
}];
Ps:详情参考极客学院GCD编程。
- 二次封装的GCD使用
- AFNetWorking使用及二次封装的好处
- Glide二次封装库的使用
- ORMLite 数据库的使用--二次封装
- OkHttp的基本使用以及二次封装
- okhttp的二次封装(基本使用)
- AFNetWorking的二次封装
- Volley的二次封装
- glog的二次封装
- ViewHolder的二次封装
- OkHttp的二次封装
- AFNetWorking的二次封装
- Volley的二次封装
- okhttp的二次封装
- FMDB的二次封装
- Okhttp的二次封装
- AFNetworking的二次封装
- RxJava_Retrofit的二次封装
- 快速堆栈模糊算法
- css3 中的content 使用方法。
- Jmter第一天
- 消息队列/分布式消息队列介绍及其应用场景
- 10 条提升 Android 性能的建议
- 二次封装的GCD使用
- java电话号码正则表达式
- android studio 快捷键分享
- [转]The Mali GPU: An Abstract Machine, Part 3 - The Shader Core
- 11种4阶环、9阶环、25阶环、49阶环,22种12阶环(2015-11-12 14:45:07)、18阶环、20阶环、28阶环(2015-11-22 09:31)
- Python-学习笔记(三)——开发环境搭建(numpy,scipy,matplotlib)
- 解决酷狗音乐缓存文件kgtemp文件无法播放的问题
- atom + activate-power-mode插件 (免FQ集成)
- Android Studio删除项目的步骤