美文网首页Swift 高级进阶
iOS 多线程学习-思维导图版本

iOS 多线程学习-思维导图版本

作者: 低音区 | 来源:发表于2020-08-11 16:16 被阅读0次

    GCDNSOperationNSThread

    1.GCD

    参考地址:iOS 多线程:『GCD』详尽总结

    重要概念:

    1. 『任务』

    • 同步执行(sync):
      • 同步添加任务到指定的队列中,在添加的任务执行结束之前,会一直等待,直到队列里面的任务完成之后再继续执行。
      • 只能在当前线程中执行任务,不具备开启新线程的能力。
    • 异步执行(async):
      • 异步添加任务到指定的队列中,它不会做任何等待,可以继续执行任务。
      • 可以在新的线程中执行任务,具备开启新线程的能力。

    2. 『队列』

    • 串行队列(Serial Dispatch Queue):
      • 每次只有一个任务被执行。让任务一个接着一个地执行。(只开启一个线程,一个任务执行完毕后,再执行下一个任务)
    • 并发队列(Concurrent Dispatch Queue):
      • 可以让多个任务并发(同时)执行。(可以开启多个线程,并且同时执行任务)

    注意:并发队列 的并发功能只有在 异步dispatch_async)方法下才有效。

    多线程-GCD.png

    2.NSOpreation

    参考地址:iOS 多线程:『NSOperation、NSOperationQueue』详尽总结

    重要概念:

    1. 『操作(Operation)』

    • 操作(Operation):
      • 执行操作的意思,换句话说就是你在线程中执行的那段代码。
      • GCD 中是放在block 中的。在NSOperation 中,我们使用NSOperation 子类NSInvocationOperationNSBlockOperation,或者自定义子类来封装操作。

    2.『 操作队列 (Operation queue)』

    • 操作队列(Operation Queues):
      • 这里的队列指操作队列,即用来存放操作的队列。不同于GCD 中的调度队列FIFO(先进先出)的原则。NSOperationQueue对于添加到队列中的操作,首先进入准备就绪的状态(就绪状态取决于操作之间的依赖关系),然后进入就绪状态的操作的开始执行顺序(非结束执行顺序)由操作之间相对的优先级决定(优先级是操作对象自身的属性)。
      • 操作队列通过设置最大并发操作数maxConcurrentOperationCount)来控制并发、串行。
      • NSOperationQueue 为我们提供了两种不同类型的队列:主队列和自定义队列。主队列运行在主线程之上,而自定义队列在后台执行。
    多线程-NSOpreation.png

    3. NSThread

    多线程-NSThread.png

    4. 总结概览

    iOS-多线程.png

    注解(自己的理解):

    • NSThread:之所以称之为 “完全的多线程编程 ” ,是因为NSThread针对的操作对象是线程。
    • NSOpreation:淡化线程的直接操作。可以理解为NSOpreation的操作对象为队列。NSOpreation对线程的操作非常少。
    • GCD:GCD相比NSThread多了队列的概念,相比NSOperation多了对线程的控制。所以说GCD处于NSThreadNSOpreation之间。

    至此文章结束。如同学们发现错误,请多指教 🤝 。

    相关文章

      网友评论

        本文标题:iOS 多线程学习-思维导图版本

        本文链接:https://www.haomeiwen.com/subject/pnljdktx.html