zoukankan      html  css  js  c++  java
  • iOS 多线程(NSOperationQueue)

    1.就基本使用

    NSInvocationOperation

    //1.创建操作对象,封装需要执行的任务
        NSInvocationOperation * operation =[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download) object:nil];
        
        //2.执行操作(默认情况下,如果操作没有放到队列queue中,都是同步执行)
        [operation start];
    
    - (void)download{
        NSLog(@"--------下载图片-----%@",[NSThread currentThread]);
    }
    

    NSBlockOperation

     //1.封装操作
        NSBlockOperation * operation=[NSBlockOperation blockOperationWithBlock:^{
            NSLog(@"--------下载图片-----%@",[NSThread currentThread]);
        }];
        
        [operation addExecutionBlock:^{
             NSLog(@"--------下载图片1-----%@",[NSThread currentThread]);
        }];
        [operation addExecutionBlock:^{
             NSLog(@"--------下载图片2-----%@",[NSThread currentThread]);
        }];
        
    
        //2.执行操作
        [operation start];
        
        //注意:只要NSBlockOperation封装的操作数>1,就会异步执行操作
    

     NSOperationQueue 操作队列

     //创建操作队列
        NSOperationQueue * queue =[[NSOperationQueue alloc]init];
        NSInvocationOperation *operation1 =[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download) object:nil];
        NSInvocationOperation * operation2 =[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(run) object:nil];
        
        NSBlockOperation * operation3 =[NSBlockOperation blockOperationWithBlock:^{
            NSLog(@"--------下载图片2-----%@",[NSThread currentThread]);
            
        }];
        
        [operation3 addExecutionBlock:^{
            NSLog(@"--------run2-----%@",[NSThread currentThread]);
    
        }];
        
        
        [queue addOperation:operation1];
        [queue addOperation:operation2];
        [queue addOperation:operation3];
     //将操作放在队列里才能异步操作
    

    *设置最大并发数

    - (void)setMaxConcurrentOperationCount:(NSInteger )cnt;

    *设置依赖

    [opetationB  addDependency:operationA];//操作B依赖于操作A       A执行完才会执行B

  • 相关阅读:
    General Problem Solving Techniques [Beginner-1]~H
    做HDU1010 带出来一个小问题
    HDU1009
    hdu1007
    hdu 1008
    HDU1006
    hdu 1005
    hdu 1004
    UVA 10970 第一次比赛 D题 (后面才补的)
    LightOJ 1317 第八次比赛 A 题
  • 原文地址:https://www.cnblogs.com/wangbinbin/p/4800562.html
Copyright © 2011-2022 走看看