多线程之NSOperation(下)
2015-09-11 17:33
253 查看
我们继续多线程方面的NSOperation的深入研究:
定制NSOperation对象的执行行为
配置依赖关系: 主要方法: addDependency: (NSOperation )op 和 removeDependency: (NSOperation )op
修改Operation在队列中的优先级 最简单的方法是: setQueuePriority : 方法来提高优先级
修改Operation执行任务线程的优先级 最简单的方法是 : setThreadPriority
设置Completion Block 可以在该block中只用GCD 来保证从主线程更新UI
执行Operation对象 : 两种方式 有些细节需要注意 如设置最大并发Operation数量时等等
取消Operation 最简单的方法是: NSOperationQueue的cancelAllOperation NSOperation的cancel
等待Operation执行完成 方法是: waitUtilFInished 和waitUntilAllOperationAreFinished 方法
暂停和恢复 Operation Queue 最简单地方法是 operationQueue的 setSuspended方法, 然而这个方法并不能单独暂停执行一个operation方法
总结: 我们应该尽可能地直接使用队列而不是线程,让系统去与线程打交道,而我们只需定义好要调度的任务就可以了。一般情况下,我们也完全不需要去自定义一个并发的 operation ,因为在与 operation queue 结合使用时,operation queue 会自动为非并发的 operation 创建一个线程。Operation Queues 是对 GCD 面向对象的封装,它可以高度定制化,对依赖关系、队列优先级和线程优先级等提供了很好的支持,是我们实现复杂任务调度时的不二之选。
定制NSOperation对象的执行行为
配置依赖关系: 主要方法: addDependency: (NSOperation )op 和 removeDependency: (NSOperation )op
修改Operation在队列中的优先级 最简单的方法是: setQueuePriority : 方法来提高优先级
修改Operation执行任务线程的优先级 最简单的方法是 : setThreadPriority
设置Completion Block 可以在该block中只用GCD 来保证从主线程更新UI
执行Operation对象 : 两种方式 有些细节需要注意 如设置最大并发Operation数量时等等
取消Operation 最简单的方法是: NSOperationQueue的cancelAllOperation NSOperation的cancel
等待Operation执行完成 方法是: waitUtilFInished 和waitUntilAllOperationAreFinished 方法
暂停和恢复 Operation Queue 最简单地方法是 operationQueue的 setSuspended方法, 然而这个方法并不能单独暂停执行一个operation方法
总结: 我们应该尽可能地直接使用队列而不是线程,让系统去与线程打交道,而我们只需定义好要调度的任务就可以了。一般情况下,我们也完全不需要去自定义一个并发的 operation ,因为在与 operation queue 结合使用时,operation queue 会自动为非并发的 operation 创建一个线程。Operation Queues 是对 GCD 面向对象的封装,它可以高度定制化,对依赖关系、队列优先级和线程优先级等提供了很好的支持,是我们实现复杂任务调度时的不二之选。
相关文章推荐
- hive报错 java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf
- 如何用新安装的jdk替换掉Linux系统默认jdk
- 读取properties文件工具类
- 经典书籍_架构设计篇
- 【ghost】centos使用nginx实现ghost博客系统的反向代理
- [在github上搭建网站]使用Git搭建我的静态网站-搭建基本环境
- CentOS6安装DaoCloud加速器
- 关于iptables的四表五链
- Linux同步机制(一) - 线程锁
- Linux同步机制(一) - 线程锁
- redhat 6.4安装opencv3.0.0
- angular的ng-options
- Linux下安装gcc遇到的问题,待解决
- html5 手机网站 meta/link标签,html5 meta全解
- maven项目使用外部tomcat7并进行远程热部署
- Linux 下编译安装软件,找不到共享库 xx.so 的解决办法
- 29个你必须知道的Linux命令
- Linux下C++的多线程编程
- NSRunLoop漫谈
- Tomcat Ip 限制