GCD中的概念理解
2018-06-27 09:09
141 查看
串行队列,任务是一个一个执行的,比如第一个是同步任务,第二个是异步任务,他们即使在不同的线程,但是需要按照加入时的顺序依次执行。
并发队列,任务是可以并发执行的,可以将任务放在不同的线程,任务的执行时没有顺序的。
同步任务,表示当前线程一定要等待任务执行完才能继续执行下去,同步任务一般都在当前线程执行,有一种例外,就是如果同步任务放在了主队列,那一定是在主线程执行的。比如这样一种情况,在线程2里面给主队列添加了一个同步任务,那么这个任务一定是在主线程执行的,但是一般而言,如果不是加在主队列,添加在一般的队列,那么都是在当前线程执行。
异步任务,表示当前线程无需等待任务返回就可以直接执行接下来的程序,异步任务在其他线程执行,同样。
栅栏任务,栅栏任务必须等待它前面所有的任务执行完毕单独执行,期间不会有其他任务与它并行,栅栏任务之后的任务又可以并发执行了。栅栏任务只对并行队列有意义,因为本身串行队列就是按照顺序执行的,栅栏任务一定会等到前面的任务执行完的。发现一个问题,栅栏任务如果用全局并发队列是没有效果的,要自己创建的并发队列才有用。
用一张图会比较好理解:
并发队列,任务是可以并发执行的,可以将任务放在不同的线程,任务的执行时没有顺序的。
同步任务,表示当前线程一定要等待任务执行完才能继续执行下去,同步任务一般都在当前线程执行,有一种例外,就是如果同步任务放在了主队列,那一定是在主线程执行的。比如这样一种情况,在线程2里面给主队列添加了一个同步任务,那么这个任务一定是在主线程执行的,但是一般而言,如果不是加在主队列,添加在一般的队列,那么都是在当前线程执行。
异步任务,表示当前线程无需等待任务返回就可以直接执行接下来的程序,异步任务在其他线程执行,同样。
栅栏任务,栅栏任务必须等待它前面所有的任务执行完毕单独执行,期间不会有其他任务与它并行,栅栏任务之后的任务又可以并发执行了。栅栏任务只对并行队列有意义,因为本身串行队列就是按照顺序执行的,栅栏任务一定会等到前面的任务执行完的。发现一个问题,栅栏任务如果用全局并发队列是没有效果的,要自己创建的并发队列才有用。
用一张图会比较好理解:
相关文章推荐
- 理解 iOS 开发中 GCD 相关的同步(synchronization)\ 异步(asynchronization),串行(serial)\ 并行(concurrency)概念
- GCD 包含概念理解
- 深入理解Javascript闭包概念
- 理解MySQL——架构与概念
- 理解内存概念
- jBPM 5/jBPM 6 基本概念,示例介绍,深入理解,工作流应用开发指南
- 深入理解Java:注解(Annotation)基本概念
- MVC与模板概念的理解
- 深入理解计算机系统(1.3)------操作系统的抽象概念
- 类、对象、接口、继承等概念的理解的简单表述..
- 四个基本概念的理解
- R语言学习(概念理解2)
- <<Effective OC>>读书笔记 --- 第六条 理解“属性”这一概念
- nginx概念理解
- 用例的概念理解
- 【概念】协议理解之HTTPS
- 有些东西需要深刻理解概念才行
- javaSE_8系列博客——Java语言的特性(一)--关于面向对象基本概念的理解(2)--对象
- 理解js异步的概念
- 简单理解Hibernate三种状态的概念及互相转化