多线程:主队列

来源:互联网 发布:java软件工程师就业 编辑:程序博客网 时间:2024/05/29 12:20
////  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
0 0