第二天-多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二天-多线程相关的知识,希望对你有一定的参考价值。

(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
      • 晚安~~

以上是关于第二天-多线程的主要内容,如果未能解决你的问题,请参考以下文章

mybatis第二天——大纲待更新

团队冲刺开发第二天

多线程 Thread 线程同步 synchronized

冲刺第二天

6.16 入职第二天

mybatis第二天