多线程:主队列
2016-03-25 23:26
260 查看
// // ViewController.m // 09-主队列 // // Created by gzxzmac on 16/1/29. // Copyright © 2016年 gzxzmac. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { NSLog(@"start"); [self gcdDemo2]; // NSLog(@"end"); } /* 1. 主队列专门是给主线程使用的 2. 不管是同步还是异步,都需要等待主线程有空闲 3. 如果在主线程上,使用同步和主队列,造成死锁 4. 同步和主队列,放在子线程上面才可以 5. 主队列通过是子线程下载完之后,回到主线程刷新界面 */ // 手机可以看 -》 面试的时候拿出来看看(笔试的时候) // 建个群,求助攻 (2个小时或者一个小时) // 十个问题。 // GCD 中使用create创建的也不需要我们手动去释放。(ARC) - (void)gcdDemo { // 主队列不需要我们手动创建,它跟主线程(应用启动)一起生成 dispatch_queue_t queue = dispatch_get_main_queue(); dispatch_async(queue, ^{ NSLog(@"%@",[NSThread currentThread]); }); NSLog(@"end"); } // 主队列跟同步 - (void)gcdDemo1 { // 死锁 只有在主线程有空闲的时候才会调用 dispatch_queue_t queue = dispatch_get_main_queue(); // 同步-》 必须先执行同步的代码 主队列在等待主线程有空闲。同步在等待执行任务 dispatch_sync(queue, ^{ NSLog(@"%@",[NSThread currentThread]); }); NSLog(@"end"); } // 解决同步加主队列的死锁问题 - (void)gcdDemo2 { dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"%@",[NSThread currentThread]); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"%@",[NSThread currentThread]); }); }); } @end
相关文章推荐
- 多线程:并发队列
- mvn profiles
- linux中断系统那些事之----中断处理过程【转】
- 那些年前端经典面试题
- ftrace 的使用【转】
- 项目已经部署,tomcat已经启动,网址也没问题,却出现404错误
- 弦月下的SQL<4> SQL语言基础
- 代码大全_第3部分: 变量
- Android OkHttp完全解析 是时候来了解OkHttp了
- 多线程:串行队列
- wget完成ftp链接下载
- iOS系统原生二维码条形码扫描
- UVALIVE 3516(DP)
- google工具包
- 设计基于锁的并发数据结构
- Calculator Part Ⅰ (代码规范化修改)
- 程序员必须知道的10大基础实用算法及其讲解
- 1006 of strategy
- 闭关日记 Day13
- 【游戏服务器开发】SDK接入——以nibia为例的SDK接入总结