美文网首页
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

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