最大并发数
1.创建队列
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
2.设置最大并发数量 maxConcurrentOperationCount
//同一时间最多有多少个任务可以执行
//串行执行任务!=只开一条线程(线程同步)
maxConcurrentOperationCount > 1 并发队列
maxConcurrentOperationCount == 1 串行队列
maxConcurrentOperationCount == 0 不会执行任务
maxConcurrentOperationCount == -1 特殊意义 最大值 表示不受限制
queue.maxConcurrentOperationCount = 1;
暂停(可以恢复)
[queue setSuspended:YES];
取消(不可以恢复)
[queue cancelAllOperations];
- 暂停和取消不能暂停和取消当前正在执行状态的任务
队列中的任务也是有状态的:已经执行完毕的 | 正在执行 | 排队等待状态
在自定义中使用NSOperation
- 我们在main函数中写上了耗时操作,我们想要取消,我们需要判断一下即可
- 我们点击了取消,在一个耗时操作结束后判断一下我们是否点击了,如果点击了直接取消,没有点击继续执行
- isCancelled属性就是判断是否取消了操作(NSOperationQueue的属性)
if(self.isCancelled) return;