博客> 多线程技术之四NSOperationQueue
多线程技术之四NSOperationQueue
1小时前 评论:0 阅读:559 Iven_Ma
ios 多线程

1.认识NSOperation和NSOperationQueue 2.如何使用NSOperationQueue实现多线程

1.了解NSOperation NSOperation是一个抽象类,用来封装单任务的代码和数据。我们不能直接使用这个类,而是使用系统定义的子类来完成实际的任务 iOS提供了两种默认实现:NSInvocitionOperation和NSBlockOperation,同时也可以自定义NSOperation子类

2.了解NSOperationQueue 一个NSOperationQueue对象并非一个线程,而是线程管理器,可以帮我自动创建新的进程。 NSOperationQueue同时引入Queue概念,如果将NSOperation添加到NSOperationQueue中,系统将自动异步执行NSOperation的操作。

3.NSOperation和NSOperationQueue实现多线程的步骤 (1)现将需要执行的操作封装到NSOperation对象中 (2)然后将NSOperation添加到NSOperationQueue中 (3)系统会自动的将NSOperationQueue中的NSOperation取出来 (4)将NSOperation封装的操作放到一条新线程中执行

4.NSOperation的运行顺序 (1)首先看NSOperation是否准备好:是否准备好由对象的依赖关系决定 (2)再根据NSOperation的优先级来确定

5.NSOperationQueue使用 (1)queue的创建

 屏幕快照 2016-03-30 下午7.36.43.png

(2)NSOperation的依赖

 屏幕快照 2016-03-30 下午7.37.55.png

不同任务的队列可以添加依赖,但是不能循环添加依赖

(3)NSOperation的优先级

 屏幕快照 2016-03-30 下午7.44.33.png

注意: 优先级高的任务,调用的几率大,并不一定最先执行。 优先级不能替代依赖关系,优先级只是对已经准备好的operations确定执行顺序 先满足依赖关系,然后再根据优先级从所有准备好的操作中选择优先级最高

(4)queue的最大并发数

 屏幕快照 2016-03-30 下午7.45.35.png

(5)暂停一个queue不会导致正在执行的operation在任务中途停止,只是简单阻止了调度新的operation执行

 屏幕快照 2016-03-30 下午7.29.57.png

(6)设置任务的暂停和重启

 屏幕快照 2016-03-30 下午7.32.43.png

我们可以通过暂停队列的方式阻止任务的执行,同样暂停一个queue不会导致正在执行的operation在任务中途停止,只是简单阻止了调度新的operation执行

收藏
0
sina weixin mail 回到顶部