#import "ViewController.h"
#import "XMGOperation.h"
@interface ViewController ()
/** */
@property(nonatomic ,strong) NSOperationQueue *queue;
@end
@implementation ViewController
- (IBAction)startBtnClick:(id)sender {
//1.创建队列
//串行和并发的功能,默认是并发
NSOperationQueue *queue = [[NSOperationQueue alloc]init];
XMGOperation *op1 = [[XMGOperation alloc]init];
[queue addOperation:op1];
/*
//最大并发数:同一时间最多可以处理多少个操作
queue.maxConcurrentOperationCount = 1;
//2.封装操作
NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"1-%@",[NSThread currentThread]);
[NSThread sleepForTimeInterval:1.0];
}];
NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{
for (NSInteger i = 0; i<1000; i++) {
NSLog(@"2-%zd--%@",i,[NSThread currentThread]);
}
}];
NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{
for (NSInteger i = 0; i<1000; i++) {
NSLog(@"3-%zd--%@",i,[NSThread currentThread]);
}
}];
NSBlockOperation *op4 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"4-%@",[NSThread currentThread]);
}];
NSBlockOperation *op5 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"5-%@",[NSThread currentThread]);
}];
NSBlockOperation *op6 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"6-%@",[NSThread currentThread]);
}];
//3.添加操作到队列
[queue addOperation:op1];
[queue addOperation:op2];
[queue addOperation:op3];
[queue addOperation:op4];
[queue addOperation:op5];
[queue addOperation:op6];
*/
self.queue = queue;
}
- (IBAction)susPendBtnClick:(id)sender {
//suspended 暂停:当为YES的时候暂停,NO的时候表示恢复
//注意:暂停可以恢复的
//暂停不会暂停当前正在执行的任务,暂停的是下一个任务
if (self.queue.suspended) {
self.queue.suspended = NO;
}else
{
self.queue.suspended = YES;
}
}
- (IBAction)cancelBtnClick:(id)sender {
//取消是不可以恢复
[self.queue cancelAllOperations];
}
@end
/*********-XMGOperation.m文件-****/
#import "XMGOperation.h"
@implementation XMGOperation
-(void)main
{
for (NSInteger i = 0 ; i<1000; i++) {
NSLog(@"任务1--%zd-%@",i,[NSThread currentThread]);
}
//判断当前操作是否被取消,如果被取消那么就直接返回
if (self.isCancelled) {
return;
}
NSLog(@"++++++++++++");
for (NSInteger i = 0 ; i<1000; i++) {
NSLog(@"任务2--%zd-%@",i,[NSThread currentThread]);
}
NSLog(@"++++++++++++");
if (self.isCancelled) {
return;
}
for (NSInteger i = 0 ; i<1000; i++) {
NSLog(@"任务3--%zd-%@",i,[NSThread currentThread]);
}
}
@end