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. CodeForces 688D-Remainders Game

    题意: 已知n, k与n个整数(c1,c2,...,cn),问你是否存在一个数x,使得它能被n个整数且k整除. 分析: 可以先将n个整数的最小公倍数lcm计算出来,再判断它是否能被k整除. 代码如下: ...

  2. net 的单元测试 初学

    1. 都要以一个方法 这样的去测试 2. 利用工具 Install-Package Moq -Version 4.0 (最高的是4.5  4.0适用于自己项目的版本)   Moq.dll 进行测试   ...

  3. Swift语言—常量、变量、类型赋值

    常量:常量在作用域内不能被赋值且不会发生改变,只读不写,每个常量都必须有唯一的名字和内存空间:关键字:let   变量:变量在作用区域内可以它的值可以被改变,可读可写可覆盖,每个常量都必须有唯一的名字 ...

  4. 关于uboot和kernel的一些理解

    经过多次的修改和实验,终于能够在mini2440开发板上进行各种uboot和kernel的挂载实验了,在此期间学习到了很多知识,也理解了一些知识1->分区uboot和kernel的分区表要一致u ...

  5. Serv-U FTP之PASV和PORT模式

    Serv-U 设置好后,访问,却提示如下错误:ftp服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹.在解决此问题前,我亲自遇到该问题,看看我查的资料 FTP的连接一般是有两个连接的,一个是客 ...

  6. Python开发入门与实战3-Django动态页面

    3.Django动态页面 上一章节我们实现的helloworld视图是用来演示Django网页是创建的,它不是一个动态网页,每次运行/helloworld/,我们都将看到相同的内容,它类似一个静态HT ...

  7. hdu 2067

    ps:晕,for()是先判断,再执行的...WA了一次...这个也是递推.第一列只有从上面来的点,所以全部是1(dp[i][0]=1) 其他的可以从上面或者左边来所以是 dp[i][j]=dp[i-1 ...

  8. java 代码的细节优化

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑 的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用 ...

  9. 十分钟了解分布式计算:Petuum

    Petuum是一个机器学习专用分布式计算框架,本文介绍其架构,并基于文章 More Effective Distributed ML via a Stale Synchronous Parallel ...

  10. 数据库update死锁

    比较常见的死锁场景,并发批量update时的一个场景: update cross_marketing set gmtModified = NOW(), pageview = pageview+ #ex ...