GCD—主队列

原创 2015年11月21日 01:03:47

特点

  • 专门用来在主线程上调度任务的队列
  • 不会开启线程
  • 以先进先出的方式,在主线程空闲时才会调度队列中的任务在主线程执行
  • 如果当前主线程正在有任务执行,那么无论主队列中当前被添加了什么任务,都不会被调度

队列获取
- 主队列是负责在主线程调度任务的
- 会随着程序启动一起创建
- 主队列只需要获取不用创建

dispatch_queue_t queue = dispatch_get_main_queue();

  • 会造成死锁的情况
- (void)gcdDemo1
{
   dispatch_queue_t q = dispatch_get_main_queue();

    NSLog(@"!!!!");
    //同步 下面的代码必须执行了之后 才能继续执行后面的代码  但是主线程现在没空(没执行完gcdDemo1的代码 所以就会互相等待)
    dispatch_sync(q, ^{
        NSLog(@"%@",[NSThread currentThread]);
    });
}

解决的办法

    - (void)gcdDemo2{
        NSLog(@"start");
        // 获得主队列
        dispatch_queue_t queue = dispatch_get_main_queue();
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            // 将任务同步添加到主队列中
            dispatch_sync(queue, ^{
                NSLog(@"%@",[NSThread currentThread]);
            });
        });
        NSLog(@"over");
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GCD编程中的主队列和全局队列

本文主要结合上一篇介绍的同步异步的概念,介绍一下ios系统提供的两个常用队列:主队列和全局队列,并记录一下我在学习中存在的疑惑和最终探索答案的过程。

知乎上的一个怎么面试iOS工程师的问题

知乎上某人的ios面试题1.什么是arc?(arc是为了解决什么问题诞生的?)首先解释ARC: automatic reference counting自动引用计数。 ARC几个要点: ...

GCD 串行队列,并发队列和主队列的整理

1.串行队列:Dispatch Queues或者 Serial Queues 同步 dispatch_queue_t queue = dispatch_queue_create("ze...

IOS学习 GCD 延时执行三种方法 并行/串行/主队列综合练习 队列组 shift+command+o快速查找

-(void)touchesBegan:(NSSetUITouch *> *)touches withEvent:(UIEvent *)event{        [self demo]; } ...
  • ridxmc
  • ridxmc
  • 2016-03-31 23:35
  • 2293

多线程GCD之图片异步加载主队列刷新UI

再来说说GCD里面的异步加载,直接上代码,亲测/* 常见的图片加载+UI刷新 * 1,dispatch_async 异步队列 * 开启一个新的线程来执行耗时操作,但是同时又不会阻塞线程,因为任务创...

GCD主队列死锁和全局队列

每一个应用程序只有一个主线程即只有一个主队列 在线程间通信中一定会使用,文章链接 http://blog.csdn.net/sinat_20559947/article/details/5...

GCD-同步,异步分别在串行队列,并发队列,主队列下的执行方式

GCD-同步,异步分别在串行队列,并发队列,主队列下的执行方式    - (void)viewDidLoad {     [super viewDidLoad];       ...

IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别

进程:正在进行中的程序被称为进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间       线程:线程是进程中一个独立的执行路径(控制单元);一个进程中至少包含一条线程,即主线程 ...

CGD全局并发队列和主队列的应用

* 1. 主队列特点 :主队列中的任务,只有主线程空闲的时候才会被调度 2. 主队列又叫全局串行队列,程序启动的时候就创建了主队列,在使用的时候不需要创建,直接GET. 2. 主队列中的任...

全局队列/主队列/

进程:正在进行中的程序被称为进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间 线程:线程是进程中一个独立的执行路径(控制单元);一个进程中至少包含一条线程,即主线程 队列 d...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)