美文网首页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