美文网首页ios程序员
GCD的基本使用

GCD的基本使用

作者: qilinit | 来源:发表于2016-09-18 21:41 被阅读8次

1异步函数+并发队列(会开多条线程,任务是并发执行的

 1、1创建并发队列

dispatch_queue_t queue = dispatch_queue_create("download", DISPATCH_QUEUE_CONCURRENT);

1、2执行异步函数

dispatch_async(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

2异步函数+串行队列(会开一条线程,任务是按顺序执行的)

2、1创建串行队列

dispatch_queue_t queue = dispatch_queue_create("download", DISPATCH_QUEUE_SERIAL);

2、2执行异步函数

dispatch_async(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

3、同步函数+并发队列(不会开线程,任务按顺序执行)

3、1创建并发队列

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

3、2执行同步任务

dispatch_sync(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

4、异步函数+并发队列(不会开线程,任务按顺序执行)

4-1创建并发队列

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

4-2执行异步任务

dispatch_async(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

5、同步函数+主队列(不会开线线程,会死锁)

5-1获得主队列

dispatch_queue_t queue =  dispatch_get_main_queue();

5-2执行同步函数

ispatch_sync(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

6、异步函数+主队列(不会开线程,任务按顺序执行)

6-1获得主队列

dispatch_queue_t queue =  dispatch_get_main_queue();

6-2执行异步函数

dispatch_async(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

7、同步函数+全局队列(不会开线程,任务是按顺序执行的)

7-1、获取全局队列

//获得全局并发队列,默认存在,特殊的并发队列

//第一个参数:队列的优先级 DISPATCH_QUEUE_PRIORITY_DEFAULT == 0

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

7-2、执行同步任务

dispatch_sync(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

8、异步函数+全局队列(会开线程,任务是并发执行的)

8-1、获得全局队列

//获得全局并发队列,默认存在,特殊的并发队列

//第一个参数:队列的优先级 DISPATCH_QUEUE_PRIORITY_DEFAULT == 0

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

8-2、执行异步函数

dispatch_async(queue, ^{

NSLog(@"download 1---%@",[NSThread currentThread]);

});

总结:会不会开线程是根据执行的是什么函数,如果是异步函数会开线程(主队列除外)如果是同步函数不会开线程

相关文章

  • iOS-多线程:GCD

    GCD 简介 GCD 任务和队列 GCD 的使用步骤 GCD 的基本使用(6种不同组合区别) GCD 线程间的通信...

  • 浅析多线程GCD

    GCD的基本使用代码

  • 多线程和AFN网络框架配合使用

    ios的多线程一般有NSOperation和GCD.NSOperation基本使用: GCD基本使用: 简单的多线...

  • iOS多线程--彻底学会多线程之『GCD』

    GCD 文章目录 GCD简介 任务和队列 GCD的使用步骤 队列的创建方法 任务的创建方法 GCD的基本使用 并行...

  • 多线程之GCD

    GCD介绍 1、GCD简介 2、GCD任务和队列 3、GCD 的基本使用 4、GCD 线程间的通信 5、GCD 的...

  • iOS GCD

    GCD 简介 GCD 任务和队列 GCD 的使用步骤 GCD 的基本使用(六种组合不同区别,队列嵌套情况区别,相互...

  • iOS多线程--GCD篇

    GCD 文章目录GCD简介任务和队列GCD的使用步骤队列的创建方法任务的创建方法GCD的基本使用并行队列 + 同步...

  • GCD多线程详解

    1. GCD 简介 2. GCD 任务和队列 3. GCD 的使用步骤 4. GCD 的基本使用(6种不同组合区别...

  • 多线程网络

    第一节 1.基本概念 2.线程安全 3.线程间通信 4.GCD GCD基本使用【重点】 GCD的栅栏函数 在使用栅...

  • # GCD基本使用

    GCD基本使用 GCD是iOS开发中常用的一种线程使用方法,相比NSThread来说,代码更加的底层一点,用了Bl...

网友评论

    本文标题:GCD的基本使用

    本文链接:https://www.haomeiwen.com/subject/nyjgettx.html