GCD学习笔记

一、GCD概要

GCD(Grand Central Dispatch)是一种异步执行技术,是一种实现多线程编程的系统级实现,可以使多线程编程变得更具效率。

二、GCD的API

Dispatch Queue:是等待处理的执行队列,我们可以通过dispatch_async等API,通过传入Block将需要处理的任务追加到Dispatch Queue中,然后由Dispatch Queue处理。Dispatch Queue有两种类型,一种是Serial Dispatch Queue,一种是Concurrent Dispatch Queue,前者顾名思义,是线性的,即按照Block的追加顺序一个一个处理,即先进先出的队列,仅仅使用一个线程。后者则是不按照追加顺序,并发的执行多个Block。对于Concurrent Dispatch Queue,并发处理Block使用多个线程,而使用的线程数量取决于系统状态。如果有4个线程可用,有8个Block并发执行,那么0,1,2,3的Block先在线程0,1,2,3中开始执行,如果Block0,1,2,3中某个执行完毕,则4补进。

下面是关于GCD的API的Demo。

dispatch_queue_t queue = dispatch_queue_create("com.demo.gcg.aSerialDispatchQueue", NULL)

dispatch_queue_create(<#const char *label#>, <#dispatch_queue_attr_t attr#>):通过该API可以创建Dispatch Queue。

该API第一个参数接受一个用来命名queue名称的字符串,第二个参数默认为NULL,即Serial,描述Dispatch Queue的类型,我们可以创建多个Serial Dispatch Queue同样可以实现并行处理。

同时,我们可以获取系统提供的标准Dispatch Queue,系统提供了两种类型的Dispatch Queue,即Main Dispatch Queue和Global Dispatch Queue,前者顾名思义,即主线程(用来响应事件、绘制UI等),后者则是异步的Concurrent Dispatch Queue,可以并发处理多个Block。

dispatch_get_main_queue():通过该API可以获取Main Dispatch Queue。

dispatch_get_global_queue(<#dispatch_queue_priority_t priority#>, <#unsigned long flags#>):通过该API可以获取Global Dispatch Queue,第一个参数是优先级常量,第二个参数默认为0,GCD提供了4中Global Dispatch Queue的优先级,分别为高、默认、低、后台。

dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);

dispatch_queue_t mainQueue = dispatch_set_target_queue(<#dispatch_object_t object#>, <#dispatch_queue_t queue#>)

排版太恶心,强迫症受不了,我得想想办法,缓缓更新。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值