GCD中队列分类及获得方式

1.串行队列  dispatch_queue_t queue = dispatch_queue_create("队列名", DISPATCH_QUEUE_SERIAL)

2.并发队列  dispatch_queue_t queue = dispatch_queue_create("队列名",DISPATCH_QUEUE_CONCURRENT)

3. 主队列    dispatch_queue_t queue = dispatch_get_main_queue();

4.全局队列(并发队列)  dispatch_queue_t queue =  dispatch_get_global_queue(0, 0)

任务的分类

1. dispatch_async(queue, ^{})  同步任务

2. dispatch_sync(queue, ^{})    异步任务

在GCD中首先创建队列,然后在队列中添加任务

1. 在串行队列中添加

A. 同步任务  不会开辟新的线程,任务按步骤执行

B. 异步任务  仅仅会开辟一条线程,任务会在新开劈的线程中执行

2.在并发队列中添加任务

A. 同步任务  不会开辟新的线程,任务按步骤执行

B. 异步任务 会开辟多条线程且数量步可控,任务会在新开劈的线程中执行

3.主队列(区别串行队列)

A. 同步任务  会阻塞任务的执行

B. 异步任务  不会开辟新的线程,且耗时的任务(可能影响流畅性的任务)任务会在主线程空闲的时候执行

4.全局队列(默认是并发队列)

A. 同步任务  不会开辟新的线程,任务按步骤执行

B. 异步任务 会开辟多条线程且数量步可控,任务会在新开劈的线程中执行

问题: 通过dispatch_queue_t queue = dispatch_queue_create("队列名", DISPATCH_QUEUE_SERIAL)获得的队列是主队列

 <NSThread: 0x600000064b40>{number = 1, name = main}在是主队列吗? 是的话,添加的同步任务物为何不回阻塞

iOS 关于GCD中的队列的更多相关文章

  1. GCD中各种队列和任务执行方式的组合

    一.概念回顾 1.GCD全称 Grand Central Dispatch ,是纯C语言,提供了非常多强大的函数,来进行系统线程的管理. 2.优势:GCD是苹果公司为多核的并行运算提出的解决方案.GC ...

  2. iOS多线程---GCD中线程的通信

    在子线程的任务完成后,有时候需要从子线程回到主线程,刷新UI. 从子线程中回到主线程,以前已经写过一种方法: [self.imageView performSelectorOnMainThread:@ ...

  3. iOS开发-GCD和后台处理

    一些生命周期函数的调用时间 打开应用时,调用 applicationWillEnterForeground: applicationDidBecomeActive: 按Home键,调用 applica ...

  4. iOS多线程——GCD与NSOperation总结

    很长时间以来,我个人(可能还有很多同学),对多线程编程都存在一些误解.一个很明显的表现是,很多人有这样的看法: 新开一个线程,能提高速度,避免阻塞主线程 毕竟多线程嘛,几个线程一起跑任务,速度快,还不 ...

  5. IOS开发 GCD介绍: 基本概念和Dispatch Queue

    iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØN ...

  6. IOS 使用GCD改善性能

    1.GCD介绍 GCD:Grand Central Dispathch,核心中央调度,是一种异步技术.但是它是系统级的. 负责管理队列,是线程之上的抽象层.队列可以并行或串行运行,能够在系统级自动管理 ...

  7. iOS多线程中,队列和执行的排列组合结果分析

    本文是对以往学习的多线程中知识点的一个整理. 多线程中的队列有:串行队列,并发队列,全局队列,主队列. 执行的方法有:同步执行和异步执行.那么两两一组合会有哪些注意事项呢? 如果不是在董铂然博客园看到 ...

  8. iOS:对GCD中 同步、异步、并行、串行的见解

    1.GCD-同步执行多线程时          GCD中不管向什么类型的队列加同步任务,实际上都会加到当前线程中(一般为主线程). 2.GCD-异步执行多线程时          GCD中不管向什么类 ...

  9. iOS开发RunnLoop学习二:GCD中的定时器

    #import "ViewController.h" @interface ViewController () /** 注释 */ @property (nonatomic, st ...

随机推荐

  1. 日期转换时Safari中返回Invalid Date

    问题: 进行日期转换时,Safari中会返回Invalid Date, 而IE 9, Firefox, Chrome and Opera显示正常,代码如下所示: var d = new Date(&q ...

  2. JavaWeb chapeter 5 Web应用程序状态管理

    1.  HTTP协议使用的是无状态连接,对容器而言,每一个请求都来自于一个新的客户. 2. html表单隐藏字段:对用户在网站上的访问进行会话跟踪.为服务器端程序提供预定义的输入.存储动态产生的页面上 ...

  3. HDU 4939 Stupid Tower Defense (2014 Multi-University Training Contest 7)

    思路:首先红色肯定要放在最后面.前面蓝色和绿色dp求解. dp[i][j]  表示前面(i+j) 个 有 i 个蓝色塔  j个绿色塔 能造成最大伤害. //====================== ...

  4. 理解RESTful架构(转载)

    本文转载自:http://www.ruanyifeng.com/blog/2011/09/restful.html 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软 ...

  5. NSURLCache 和 NSCache 的区别

    NSURLCache 和 NSCache 的区别 NSURLCache提供的是URL Request缓存,可以在Memory和Disk上:NSCache提供了HTTP Request外的东西的缓存方式 ...

  6. JS form表单图片上传

    // 点击file 类型的input 触发的方法 function changesProvider(){ // fileProvider -> input中的name属性值 var f = do ...

  7. SSH basics

    SSH, Secure SHell, was designed and created to provide the best security when accessing another comp ...

  8. C++类的嵌套(2)-访问权限和调用关系

    类似于命名空间,一个类也是一个类命名空间.因此类嵌套的作用是帮助实现外层类,并且避免命名冲突.  对于命名空间(不再赘述可以参考<c++ prime plus>),其中定义的变量和函数的作 ...

  9. js便签笔记(3)——切记:appendChild()、insertBefore()是移动element节点!

    appendChild().insertBefore()是移动element节点,看书的时候注意过,也可以做一个简单的例子测试一下: <div id="div1"> & ...

  10. [转]Redis实现分析

    Redis实现分析 浏览次数:1018次 KITERUNNER_T 2014年10月19日 字号: 大 中 小 分享到: QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 开心网 更多 1   1 环境准 ...