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 串行队列,并发队列和主队列的整理

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

ios多线程操作(六)—— GCD全局队列与主队列

GCD默认已经提供了全局的并发队列供整个应用使用,所以可以不用手动创建。       创建全局队列的函数为 dispatch_queue_t q = dispatch_get_global_queue...

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

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

ios-day19-02(GCD介绍。串行队列、并行队列、全局队列、主队列、同步任务、异步任务)

// // JLViewController.m // 01-GCD // // Created by XinYou on 15-4-3. // Copyright (c) 2015...

IOS AssetsLibrary框架的使用

AssetsLibrary框架提供了访问“照片”应用程序下的图片和视频。你可以使用该框架检索资源列表,也可以保存照片或视频到照片相册下。该框架的层次结构为: ALAssetsLibrary-->ALA...

iOS分类(category),类扩展(extension)—史上最全攻略

本文会带你看懂分类,类扩展和匿名分类的前世今生,从看懂到会用。

GCD介绍。串行队列、并行队列、全局队列、主队列、同步任务、异步任务

GCD的基本思想就是将操作(任务)放在队列中去执行 队列负责调度任务执行所在的线程以及具体的执行时间 队列的特点是先进先出,新添加至队列的操作(任务)都会排在队尾 GCD...

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

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

GCD主队列死锁和全局队列

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

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

GCD-同步,异步分别在串行队列,并发队列,主队列下的执行方式    - (void)viewDidLoad {     [super viewDidLoad];       ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GCD—主队列
举报原因:
原因补充:

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