美文网首页
GCD 队列类型

GCD 队列类型

作者: GTMYang | 来源:发表于2017-06-08 13:10 被阅读0次

GCD 提供有 dispatch queues 来处理代码块,这些队列管理你提供给 GCD 的任务并用 FIFO 顺序执行这些任务。这就保证了第一个被添加到队列里的任务会是队列中第一个开始的任务,而第二个被添加的任务将第二个开始,如此直到队列的终点。

所有的调度队列(dispatch queues)自身都是线程安全的,你能从多个线程并行的访问它们。当你了解了调度队列如何为你自己代码的不同部分提供线程安全后,GCD的优点就是显而易见的。关于这一点的关键是选择正确类型的调度队列和正确的调度函数来提交你的工作。

1. Serial Queues 串行队列

串行队列中的任务一次执行一个,每个任务只在前一个任务完成时才开始。而且,你不知道在一个 Block 结束和下一个开始之间的时间长度。
这些任务的执行时机受到 GCD 的控制;唯一能确保的事情是 GCD 一次只执行一个任务,并且按照我们添加到队列的顺序来执行。
由于在串行队列中不会有两个任务并发运行,因此不会出现同时访问临界区的风险;相对于这些任务来说,这就从竞态条件下保护了临界区。所以如果访问临界区的唯一方式是通过提交到调度队列的任务,那么你就不需要担心临界区的安全问题了。

2. Concurrent Queues 并发队列

在并发队列中的任务能得到的保证是它们会按照被添加的顺序开始执行,但这就是全部的保证了。任务可能以任意顺序完成,你不会知道何时开始运行下一个任务,或者任意时刻有多少 Block 在运行。

示例任务执行计划

相关文章

  • GCD多线程问题整理

    1.GCD队列有哪几种类型?有哪几种队列? GCD队列分为串行队列、并行队列两种类型;队列有主串行队列、全局并行队...

  • GCD相关知识总结

    一:GCD的队列简介 GCD的Queue有三大队列类型:主队列(main)、全局队列(global)、用户队列(c...

  • GCD的队列类型与NSOperationQueue的队列类型

    GCD的队列类型 并发队列自己创建的全局 串行队列主队列自己创建的 NSOperationQueue的队列类型 主...

  • GCD线程学习小结

    GCD的三种队列类型 GCD的核心是dispatch队列。dispatch Block的执行最终会放到某个队列中去...

  • iOS GCD中的三种队列类型

    GCD中的三种队列类型 GCD编程的核心就是dispatch队列,dispatch block的执行最终都会放进某...

  • GCD串行队列与并发队列

    GCD的队列可以分为2大类型:串行队列、并发队列。一: 串行队列(Serial Dispatch Queue):一...

  • GCD 队列类型

    GCD 提供有 dispatch queues 来处理代码块,这些队列管理你提供给 GCD 的任务并用 FIFO ...

  • GCD多线程

    目前, GCD 有三种队列类型. main queue: 主队列. global queue: 全局队...

  • IOS - 多线程

    多线程实现方案 GCD的队列类型 并发队列自己创建的全局 串行队列主队列自己创建的 NSOperationQueu...

  • GCD所有函数

    GCD中的队列类型 The main queue(主线程串行队列)可以通过dispatch_get_main_qu...

网友评论

      本文标题:GCD 队列类型

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