多线程篇-NSOperation-方法使用
NSOperation-方法使用
一、并发数
-
简介
(1)该属性控制队列是串行执行还是并发执行
(2)如果最大并发数等于1,那么该队列是串行的,如果大于1那么是并行的
(3)系统的最大并发数有个默认的值,为-1,如果该属性设置为0,那么不会执行任何任务
-
代码
//1.创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; //2.设置最大并发数 queue.maxConcurrentOperationCount = 2;
-
补充
设置同时最大并发操作数量
- WIFI: 5~6条
- 2G/3G/4G:2~3条
二、队列的取消,暂停和恢复
- (void)cancelAllOperations
取消队列的所有操作。
也可以调用:NSOperation的-(void)cancel方法取消单个操作
@property (getter=isSuspended) BOOL suspended;
- setSuspended:(BOOL)b
YES表示暂停队列,NO表示回复队列
if (self.opQueue.isSuspended) {
NSLog(@"继续");
self.opQueue.suspended = NO;
} else {
NSLog(@"暂停");
self.opQueue.suspended = YES;
}
三、操作依赖
-
简介
1、建立操作之间的执行顺序关系 2、若要建立操作之间的依赖关系,必须在操作被添加到队列之前建立
-
代码
-(void)demo{ //创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; //创建三个任务 NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{ //任务1代码 NSLog(@"operation1----%@",[NSThread currentThread]); }]; NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{ //任务2代码 NSLog(@"operation2----%@",[NSThread currentThread]); }]; NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{ //任务3代码 NSLog(@"operation3----%@",[NSThread currentThread]); }]; //operation1 依赖于 operation2 [operation1 addDependency:operation2]; //operation2 依赖于 operation3 [operation2 addDependency:operation3]; //添加到队列中区 [queue addOperation:operation1]; [queue addOperation:operation2]; [queue addOperation:operation3]; NSLog(@"-------------------");
}
```
-
补充
不能循环依赖(不能A依赖于B,B又依赖于A)。
//把上处地方更改一下 //operation1 依赖于 operation2 [operation3 addDependency:operation2]; //operation2 依赖于 operation3 [operation2 addDependency:operation3];
![](https://images2015.cnblogs.com/blog/731729/201601/731729-20160113220848397-362693358.png)
结束
本章到此结束
欢迎各位码友随意转载并指正