码迷,mamicode.com
首页 > 编程语言 > 详细

第二天-多线程

时间:2016-02-20 01:47:19      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

(1)GCD,纯C,自动管理生命周期,大中央调度,要理解队列与任务,任务在队列里面去除遵循先进先出的准则。

(2)NSOperation,OC,基于GCD的封装,自动管理生命周期,把操作(NSOperation)放进队列(NSOperationQueue)里面,里面的额操作会异步执行。

  • 线程间怎么通信?

    • perfromSelectior:onThead:withObjecti:waitUntilDone:
    • NSMachPort(在RunLoop里面的source0和source1里面)
  • cocoa常见的多线程实现

    • 只有在主线程刷新访问UI
    • 如果要保证属性的线程安全(atomic)
    • 如果一部操作要保证线程安全等问题,尽量使用GCD
    • 如果想要定时器精确,用GCD定时器
  • GCD内部实现

    • iOS和OSX的黑心是XNU内核,GCD是基于XNU内核实现的
    • GCD的API全部在libdiPatch库中
    • GCD的底层实现主要有DispatchQueue和DispatchSource
      • DispatchQueue:管理block(操作)
      • DispatchSource:处理事件(MACH端口发送,MACH端口接收,监测与进程的事件的10种事件)
  • NSOperation相对于GCD的优点

    • 面向对象
    • 封装性好
    • 提供便利的方法
    • 支持KVO,可以监测operation是否正在执行(isExecuted),是否结束(isFinished),是否取消(isCancled)
    • GCD的执行速度比NSOperationQueue快
    • 选择
      • 任务需要依赖或者要监听任务的执行情况,用NSOperationQueue
    • 在使用GCD的时候要防止循环引用
      • ARC:_weak_unsafe_unretained
      • MRC:_block
      • 晚安~~

第二天-多线程

标签:

原文地址:http://www.cnblogs.com/liuzhenjie/p/5202537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!