iOS中的并发编程

并发编程是iOS中的一项很重要的基础技术,iOS并发编程分为三个层面,NSThread、GCD和NSOperationQueue。

NSThread对pthread做了一层简单封装,比pthread使用起来简单。

GCD是grand central dispatch的缩写,包含了一系列以dispatch开头的C语言API,其核心是基于dispatch queue的block操作。系统默认提供了一个主队列和四个不同优先级的后台队列,开发者可以直接获取任一分发队列,添加同步、异步、延时等block任务。之前在一些技术资料上有提到,GCD是对NSThread的上层封装,看过libdispatch的源码之后,发现其实不然,后面的博客我会做解释。

NSOperationQueue操作队列,它是对GCD的上层封装。开发者可以把要完成的任务封装成操作(NSOperation),然后添加到响应的NSOperationQueue中。使用NSOperation的好处是,开发者可以控制NSOperation的start、finished、cancel各种状态,知晓任务的执行状态。

NSThread用到的场景比较少,GCD使用起来非常方便,有种拿来就用的感觉,NSOperation则需要使用继承方式重写main、start等方法,使用相对复杂,较为复杂的需求会用上,比如afnetworking中的AFURLConnectionOperation和SDWebImageDownloaderOperation。GDC把需要完成的工作丢到block里面即可,但是block的执行过程对开发者是一个黑盒子,而NSOperation能够很好的感知操作的执行状态,并且能够很方便的取消操作。

 GCD的实现代代码是开源的,详见苹果的开源站点(opensource.apple.com)。最近花了不少时间阅读GCD源代码,对GCD的相关API的实现有了大致了解,后续我会写成博客分享给大家,主要包括dispatch queue、once、async、aync、group、after的源码解析,有什么不对的地方还请大家及时指正。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值