美文网首页
GCD入门基础知识

GCD入门基础知识

作者: 诺馨 | 来源:发表于2016-05-21 12:51 被阅读49次

正式学习GCD之前,先要熟悉下列的术语:

串行与并发

1、任务串行执行就是每次只有一个任务被执行
2、并发即在同一时间内可以有多个任务被执行

同步与异步

1、一个同步函数只在完成了它预定的任务后才返回
2、一个异步函数,刚好相反,会立即返回,预定的任务会完成但不会等它完成。因此,一个异步函数不会阻塞当前线程去执行下一个函数

并发与并行

两个既相似又有区别的概念,并行要求并发,但是并发并不能保证并行。
1、并行是指两个或多个事件在同一时刻发生
2、并发是指两个或多个事件在同一时间间隔内发生。

串行队列与并发队列

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

GCD队列类型

包括主队列、全局调度队列、自己创建的串行队列或者并发队列。

  • 主队列是系统自动创建的与<b>主线程关联的串行队列</b>,通过dispatch_get_main_queue来获取。而主线程是唯一可以用于更新UI的线程,即是说必须在主线程访问UIKit的类。
  • 全局队列通过 dispatch_get_global_queue来获取,可以设置优先级。目前的全局队列有4个不同的优先级:background、low、default 以及 high。即
    #defineDISPATCH_QUEUE_PRIORITY_HIGH 2
    #define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
    #define DISPATCH_QUEUE_PRIORITY_LOW (-2)
    #define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN
  • 串行队列或者并发队列是通过dispatch_queue_create函数来创建的。此函数有2个参数。参数1是一个C语言的字符串,是队列的标签,也就是名称,通常是采用com..这样的格式。参数二是指定串行队列还是并发队列。传DISPATCH_QUEUE_SERIAL进去,则是串行队列,传DISPATCH_QUEUE_CONCURRENT则为并发队列。

参考:
http://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1
(计算机操作系统)

相关文章

  • GCD入门基础知识

    正式学习GCD之前,先要熟悉下列的术语: 串行与并发 1、任务串行执行就是每次只有一个任务被执行2、并发即在同一时...

  • iOS GCD的使用

    什么是GCD了解GCD前,需要了解的基础知识GCD的使用使用注意事项 -GCD学习前铺垫-什么是GCDGCD (G...

  • iOS GCD的使用

    本文的主要内容是: 什么是GCD 了解GCD前,需要了解的基础知识 GCD的使用 使用注意事项 -GCD学习前铺垫...

  • GCD多线程归纳和总结

    GCD多线程基础知识 Serial Dispatch Queue 串行队列Concurrent Dispatch ...

  • 外挂基础知识入门

    外挂基础知识入门

  • iOS图形图像及核心动画实战三GCD基础知识

    本教程是一个合集,涉及到的目录结构:基础知识总结Block基础知识GCD实战CoreGraphics & Imag...

  • iOS图形图像及核心动画实战二Block基础知识

    本教程是一个合集,涉及到的目录结构:基础知识总结Block基础知识GCD实战CoreGraphics & Imag...

  • 股票入门基础知识怎样看k线【干货内容】

    股票入门基础知识怎样看k线 股票入门基础 股票基础知识 股票入门基础 微信公众号:中资财经 公众号上提供【免费诊股...

  • GCD入门

    讲在前面 GCD、NSOperation、NSThread哪个你比较中意呢?我用的GCD很顺手啊,相信很多人也和我...

  • GCD入门

    Grand Central Dispatch(GCD) 是 iOS 开发的一个多核编程的较新的解决方法。它主要用于...

网友评论

      本文标题:GCD入门基础知识

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