美文网首页
Operrition

Operrition

作者: 艾克12138 | 来源:发表于2016-06-25 20:58 被阅读24次

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

#warning mark nsoperation 本身不是线程,他只是封装了一定的代码段和数据去实现一个功能

- (IBAction)invocationOP:(UIButton *)sender {

NSInvocationOperation *invocation =[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(text) object:nil];

[invocation start];

}

//nsblock

- (IBAction)blockOP:(UIButton *)sender {

NSBlockOperation *block =[NSBlockOperation blockOperationWithBlock:^{

[self text];

}];

[block start];

}

//线程队列(!!!!!子线程队列是无序的)

- (IBAction)opretionqu:(UIButton *)sender {

//创建一个子线程队列(并发)(不需要我们在去手动开启)

NSOperationQueue *queue=[[NSOperationQueue alloc]init];

/* 依赖关系:(1)可保证执行顺序,(2)可以跨队列,而串行队列是不可以夸队列,如最后跟新UI则变成了在主队列朱,这是NSoperationqueue的优势

*/

//    NSBlockOperation *op1 =[NSBlockOperation blockOperationWithBlock:^{

//        NSLog(@"下载图片%@",[NSThread currentThread]);

//    }];

//    NSBlockOperation *op2=[NSBlockOperation blockOperationWithBlock:^{

//        NSLog(@"国栋开始P图%@",[NSThread currentThread]);

//    }];

//    NSBlockOperation *op3=[NSBlockOperation blockOperationWithBlock:^{

//        NSLog(@"保存图片%@",[NSThread currentThread]);

//    }];

//

//    NSBlockOperation *op4=[NSBlockOperation blockOperationWithBlock:^{

//        NSLog(@"刷新UI%@",[NSThread currentThread]);

//    }];

//添加依赖关系(依赖关系要添加到添加队列之前)

//    [op2 addDependency:op1];//也就是下载结束了之后再对图片进行修改,一种依赖关系;

//    [op3 addDependency:op2];

//    [op4 addDependency:op3];//夸队列添加依赖关系;

//    //设置最大并发数,也就是说当前对列最多由几个线程同时执行,一般情况下,设置为二或三(设置为0时,相当于不执行)

//    queue.maxConcurrentOperationCount =2;

//    //吧op1 op2 op3 添加到队列

//    [queue addOperation:op1];

//    [queue addOperation:op2];

//    [queue addOperation:op3];

//    //把OP4添加到主线程中

//    [[NSOperationQueue mainQueue] addOperation:op4];

NSBlockOperation *op1 =[NSBlockOperation blockOperationWithBlock:^{

NSLog(@"1");

}];

NSBlockOperation *op2=[NSBlockOperation blockOperationWithBlock:^{

NSLog(@"2");

}];

NSBlockOperation *op3 =[NSBlockOperation blockOperationWithBlock:^{

NSLog(@"3");

}];

NSBlockOperation *op4 =[NSBlockOperation blockOperationWithBlock:^{

NSLog(@"4");

}];

NSBlockOperation *op5 =[NSBlockOperation blockOperationWithBlock:^{

NSLog(@"5");

}];

NSBlockOperation *op6=[NSBlockOperation blockOperationWithBlock:^{

NSLog(@"6");

}];

[op2 addDependency:op1];

[op3 addDependency:op2];

[op6 addDependency:op3];

[op4 addDependency:op6];

[op5 addDependency:op4];

//    [op6 addDependency:op5];

[queue addOperation:op1];

[queue addOperation:op2];

[queue addOperation:op3];

[queue addOperation:op4];

[queue addOperation:op5];

[[NSOperationQueue mainQueue]addOperation:op6];

}

-(void)text{

NSLog(@"%@,%d",[NSThread currentThread],[[NSThread currentThread]isMainThread]);

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

相关文章

  • Operrition

    #import "ViewController.h" @interface ViewController () @...

网友评论

      本文标题:Operrition

      本文链接:https://www.haomeiwen.com/subject/fnaodttx.html