zoukankan      html  css  js  c++  java
  • 多线程 队列的简单操作

     NSOperationQueue *queue = [[NSOperationQueuealloc]init];

     

         queue.maxConcurrentOperationCount = 2;

    //线程池中的线程数,也就是并发操作数。默认情况下是-1,-1表示没有限制,这样会同时运行队列中的全部的操作。

     

        for (NSInteger i = 0 ; i <1000000;i ++ ) {

            NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{

                sleep(1);

                NSLog(@"%ld%@",i,[NSThread currentThread]);

            }];

            [queue addOperation:operation];

     

        }

     NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{

            sleep(1);

            NSLog(@"外加0%@",[NSThreadcurrentThread]);

        }];

        NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{

            sleep(1);

            NSLog(@"外加1%@",[NSThreadcurrentThread]);

        }];

        NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{

            sleep(1);

            NSLog(@"外加2%@",[NSThreadcurrentThread]);

        }];

        [operation addDependency:operation2];//添加依赖关系改变执行顺序

        [operation2  setQueuePriority:NSOperationQueuePriorityHigh];//设置operation2为高优先级先执行

        [queue addOperation:operation];

        [queue addOperation:operation1];

        [queue addOperation:operation2];

     

        

        [queue addOperationWithBlock:^{

            NSLog(@"执行一个新的操作,线程:%@", [NSThreadcurrentThread]);

        }];

        // 阻塞当前线程,等待queue的所有操作执行完毕

        [queue waitUntilAllOperationsAreFinished];

        [queue setSuspended:YES];//暂停

        [queue setSuspended:NO];//恢复

        [queue cancelAllOperations];//取消所有操作

  • 相关阅读:
    [BZOJ4553][TJOI2016&HEOI2016]序列
    树套树乱讲的代码
    树套树乱讲
    [Luogu4174][NOI2006]最大获益
    [BZOJ3879]SvT
    [BZOJ3611][HEOI2014]大工程
    [BZOJ1501][NOI2005]智慧珠游戏
    [BZOJ1499][NOI2005]瑰丽华尔兹
    [BZOJ3460] Jc的宿舍
    [HDU4812]D Tree
  • 原文地址:https://www.cnblogs.com/zhujin/p/4274815.html
Copyright © 2011-2022 走看看