iOS开发之GCD并发队列

作者: 程序员_秃头怪 | 来源:发表于2019-03-07 21:20 被阅读4次

iOS开发多线程之GCD
iOS开发之GCD同步任务加强
iOS开发之GCD串行队列
iOS开发之GCD并发队列

03 GCD-并发队列

并发队列,异步执行

MARK:并发队列,异步执行
-(void)gcdDemo3{
    
    //1.队列-并发 DISPATCH_QUEUE_CONCURRENT 并发
    dispatch_queue_t  q = dispatch_queue_create("cc_queue",DISPATCH_QUEUE_CONCURRENT);
        
   //2.异步执行任务
   for(int i = 0;i < 10;i++)
   {
    dispatch_async(q,^{
    NSLog(@"%@ %d",[NSThread currentThread],i);
    });
   }
        
    NSLog(@"come here");

}

问题:
1.会开几条线程?
会开多条线程,线程数量是由GCD来决定
2.会顺序执行吗?
不会
3.come here的位置?
不确定,一般会靠上的位置

看起来任务执行的是顺序的。是因为线程的耗时差不多。最重要原因是,线程取任务是顺序取的。

并发队列,同步执行

MARK:并发队列,同步执行
-(void)gcdDemo4{
    
    //1.队列-并发 DISPATCH_QUEUE_CONCURRENT 并发
    dispatch_queue_t  q = dispatch_queue_create("cc_queue",DISPATCH_QUEUE_CONCURRENT);
        
   //2.同步执行任务
   for(int i = 0;i < 10;i++)
   {
    dispatch_sync(q,^{
    NSLog(@"%@ %d",[NSThread currentThread],i);
    });
   }
        
    NSLog(@"come here");

}

问题:
1.会开几条线程?
不会
2.会顺序执行吗?
顺序
3.come here的位置?
最后

对比串行队列同步任务 和 并发队列同步任务

  • 2者之间的结果是一样的。只要同步执行,不管是串行还是并行都是 一样的。

同步执行:不会到线程池里面去获取子线程
异步执行:只要有任务,就会到线程池取子线程(主队列除外)

mainQueue是顺序执行

小结

开不开线程,取决去任务的函数,同步不开,异步才能开;
开几条线程,取决于队列,串行开一条,并发可以开多条(异步执行)

推荐文集

* iOS开发之性能优化

* iOS开发之weak底层实现原理

* 2019年iOS面试必备技术点总结

原文作者:集才华美貌于一身的—C姐

相关文章

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

  • iOS开发之GCD同步任务加强

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 004...

  • iOS开发之GCD串行队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 实例d...

  • iOS多线程梳理-GCD(3)

    上一篇 iOS多线程梳理-GCD死锁 GCD栅栏函数 仅在自己创建的并发队列上有效,在全局(Global)并发队列...

  • iOS 开发之 GCD 基础

    iOS 开发之 GCD 基础 本文主要为 GCD 的 队列和执行方法等基础总结,目录如下: [TOC] GCD是什...

  • 多线程

    iOS中的几种多线程GCD1、GCD分为任务和队列,任务(同步,异步)队列(串行,并发),同步串行,同步主队列的情...

  • 关于GCD的使用

    在iOS开发中,对于多线程,大多数开发者使用苹果提供的简单的GCD, 频繁的使用GCD,并发队列并不会去管理最大并...

  • iOS开发多线程篇—GCD介绍(转)

    iOS开发多线程篇—GCD介绍 用异步函数往并发队列中添加任务--同时开启三个子线程 用异步函数往串行队列中添加任...

  • 多线程之GCD使用

    上文已经介绍了GCD的一些基本概念多线程操作之GCD概述 GCD 的使用步骤 创建一个队列(串行队列或并发队列) ...

网友评论

    本文标题:iOS开发之GCD并发队列

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