[第2章]多线程:GCD的简单使用(1)

一、关于

直接贴官方文档:

1

解析:
1、系统、全面地提升并行代码在多核的性能;
2、更好地调度系统资源;
3、使用GCD之前,考虑使用Cocoa类似的功能(via NSOperation and block objects)会比较简单或更适合应用开发。

附:
2

二、队列

介绍

官方文档:

队列
注意:修改UI的操作,都应该在主队列中处理;否则,会导致UI操作的延迟。

有三种获得方式:
1、dispatch_main_queue;主队列,串行的。

2、dispatch_get_global_queue::;全局队列,并行的。

3、dispatch_queue_create::;自定义队列,串行或并行。

1、The main queue

这里写图片描述

2、The global queue

这里写图片描述

附:优先级

SKD8.1文档

作者:u011058732 发表于2015/3/20 21:07:44

3、Other queue

这里写图片描述

三、函数

1、(异步)dispatch_async::

这里写图片描述

代码实现

// 使用系统的全局队列,优先级高于标准。
var queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)

dispatch_async(queue, { () -> Void in

    // code..

    // 在主线程上修改UI。
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        // code..
    })
})

2、(异步)dispatch_after:::

该函数主要用作优化、提升性能。
注意:建议使用主队列。
这里写图片描述

附:时间参数

这里写图片描述

苹果建议用的转换单位:
这里写图片描述

代码实现

// 3秒时间。
var time = dispatch_time(DISPATCH_TIME_NOW, (Int64)(NSEC_PER_SEC * 3))

// 苹果建议放到主队列,因为此函数一般用于操作UI。
dispatch_after(time, dispatch_get_main_queue()) { () -> Void in
    // code..
}

3、(同步)dispatch_apply:::

该函数主要用作优化、提升性能。
一般使用系统全局队列。
使用场合:1、耗时;2、循环次数少;3、由于同步,可结合异步函数使用。
这里写图片描述

代码实现

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), { () -> Void in

    dispatch_apply(3, dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) { (index) -> Void in
    // code..
    }
})

下一篇:调度组使用(dispatch_group)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值