iOS GCD总结

1.为什么要使用GCD?

·GCD可用于多核的并行运算

·GCD会自动利用更多的CPU内核(双核  四核)

·GCD会自动管理线程的生命周期,不需要编写任何线程管理代码

2.GCD任务和队列

任务:

执行操作的意思,在线程中执行的代码

同步执行(sync)

·同步添加任务到指定的队列中,在添加的任务执行结束之前会一直等待,直到队列里面的任务完成之后再继续执行

·不开启新的线程

异步执行(async)

·异步添加任务到指定的队列中,不会做任何等待,可以继续执行任务

·可以在新的线程中执行任务,具备开启新线程的能力

队列(Dispatch Queue)

指执行任务的等待队列,即用来存放任务的队列。队列是一种特殊的线性表,采用FIFO先进先出的原则。

串行队列(Serial Dispatch Queue)

·依次逐一先后有序的执行(只开启一个线程,一个任务执行完毕后,再执行下一个任务)

并发队列(Concurrent Dispatch Queue)

·可以让多个任务并发(同时)执行(可以开启多个线程,并且同时执行任务)

主队列(Main Dispatch Queue)

·GCD提供的一种特殊的串行队列,所有放在主队列中的任务,都会放到主线程中执行。

3.使用GCD

·创建一个队列(串行队列或并发队列)

·将任务追加到任务的等待队列中,然后系统就会根据任务类型选择同步或者异步来执行任务

3.1队列的创建/获取方法

 dispatch_queue_create(<const char * _Nullable label>, <dispatch_queue_attr_t  _Nullable attr>)

·只用dispatch_queue_create来创建队列,需要传入两个参数。第一个参数表示队列的唯一标识符,用于DEBUG。第二个参数用来识别是串行队列还是并发队列。DISPATCH_QUEUE_SERIAL表示串行队列,DISPATCH_QUEUE_CONCURRENT表示并发队列。

3.2任务的创建方法

dispatch_sync(同步执行)

dispatch_async(异步执行)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文首发于我的个人博客:「程序员充电站」[https://itcharge.cn]文章链接:「传送门」[https...
    ITCharge阅读 350,183评论 308 1,927
  • 讲多线程这个话题,就免不了先了解多线程相关的技术概念。本文涉及到的技术概念有CPU、进程、线程、同异步、队列等概念...
    jackyshan阅读 9,226评论 2 26
  • 上午刚好走到小区的一个路口碰见梅姐,梅姐告诉我村里的人正在拜祭榕树叫我也赶紧去拜一下,我就往里面走到另一个拐弯处,...
    风和日丽_a495阅读 5,040评论 0 0
  • 你是否有这样的困扰: “我以前读过这本书,但已经不记得里面的内容了……” “虽然是本好书,但是读过以后没什么深刻的...
    肥肥婷阅读 2,784评论 0 5
  • 奶粉筒别扔了,攒起来做个小凳子,宝宝能坐,还能存放好多小零碎。 ​​​奶粉筒越攒越多怎么办?教你一个终极解决办法,...
    makeup生活阅读 3,746评论 2 6

友情链接更多精彩内容