美文网首页CodeEase@IT·互联网iOS Developer
#iOS多任务并发执行解决方案

#iOS多任务并发执行解决方案

作者: 践行者 | 来源:发表于2016-08-13 12:29 被阅读635次

iOS多任务并发执行解决方案

Operation object:

该技术出现在OS X 10.5中,通过将要执行的任务封装成操作对象的方式实现任务在多线程中执行。任务可以理解为你要想执行的一段代码。在这个操作对象中不光包含要执行的任务,还包含线程管理的内容,使用时通常与操作队列对象联合使用,操作队列对象会管理操作对象如何使用线程,所以我们只需要关心要执行的任务本身即可。更高层次的抽象

NSOperation

NSOperation是抽象基类,需要实现相应子类。不Cocoa提供了两个具体的子类NSInvocationOperation和NSBlockOperation。其中NSInvocationOperation以@selector来创建operation object;NSBlockOperation以block来创建operation object.当然你也可以自己自定义

所有的operation objects都支持这些特性

  • 依赖关系,可以阻塞某个operation,直到他所依赖的所有operation都已经完成
  • 可以设置completion block
  • 可以通过KVO来监控operation的状态
  • 可以设置operation的优先级
  • 可以取消

创建operation object之后,加入到适当的operation queue即会立刻开始执行。

Note

关于这部分有兴趣的可以看看AFNetworking2.0源码

Operaton queue
  • 可以设置并发执行的operation 数量,设为1,即为串行队列
  • 可以暂时挂起,继续,等待直到完成

GCD:

该技术出现在OS X 10.6中,它与Operation Object的初衷类似,就是让开发者只关注要执行的任务本身,而不需要去关注线程的管理。你只需要创建好任务,然后将任务添加到一个工作队列里即可,该工作队列会根据当前CPU性能及内核的负载情况,将任务安排到合适的线程中去执行。

关于GCD,可以看我之前的文章GCD概论

Idle-time notification:

该技术主要用于处理优先级相对比较低、执行时间比较短的任务,让应用程序在空闲的时候执行这类任务。Cocoa框架提供NSNotificationQueue对象处理空闲时间通知,通过使用NSPostWhenIdle选项,向队列发送空闲时间通知的请求。

在iOS中,消息机制基于广播模型

消息中心(NSNotificationCenter) 是基于进程的单件实例;消息队列(NSNotificationQueue)是基于线程的,每个线程都有有一个默认的消息队列,这个队列关联与消息中心,每个消息中心或线程可以关联多个队列。

消息中心是采用同步方式,消息队列采用异步方式

Asynchronous functions:

系统中有一些支持异步的函数,可以自动让你的代码并行执行。这些异步函数可能通过应用程序的守护进程或者自定义的线程执行你的代码,与主进程或主线程分离,达到并行执行任务的功能。

Timers:

我们也可以在应用程序主线程中使用定时器去执行一些比较轻量级的、有一定周期性的任务。

常用的NSTimer

文章参考

1.http://www.jianshu.com/p/8767ce26c586

相关文章

  • #iOS多任务并发执行解决方案

    iOS多任务并发执行解决方案 Operation object: 该技术出现在OS X 10.5中,通过将要执行的...

  • Swift (GCD)异步并发+网络 任务执行结束统一处理 解决

    上代码: 测试结果 灵感来源:iOS】异步并发多任务 任务执行结束统一处理 (控制并发量)移除了信号量相关的代码,...

  • python实现多任务方式

    什么是多任务?就是操作系统可以同时运行多个任务 多任务的执行方式并发:交替执行,是假的多任务并行:同时执行,是真的...

  • C++多线程

    基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。 c++多线程编程使用的是...

  • Python多任务(高级编程六)

    并行:真的多任务 cpu大于当前执行的任务并发:假的多任务 cpu小于当前执行的任务 多线程 查看线程数量 thr...

  • 12-Python之路-进阶-多任务

    多任务:线程 多任务:简介 操作系统可以同时运行多个任务。操作系统轮流让各个任务交替执行,实现的多任务效果 并发:...

  • App itunes connect 提交审核"UIR

    解决方案 xcodebuild 来自iOS自动打包并发布脚本

  • 协程基础

    一、概念 协程是通过一个线程在不同代码块之间切换执行,从而实现多任务(这里是并发,假的多任务)并发:一个时间段内,...

  • 迭代器 生成器总结2019-07-02

    并行(真多任务)多个任务一起执行 并发(假多任务)多个任务在有限核中交替执行 生成器是一类特殊的迭代器 判断的迭代...

  • Python多线程 Multi-threading

    时间片轮转:每个任务执行万分之一秒,然后切换。 并行:真的多任务。每个CPU核心执行一个任务 并发:假的多任务。启...

网友评论

    本文标题:#iOS多任务并发执行解决方案

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