美文网首页
从任务依赖这件小事说起

从任务依赖这件小事说起

作者: lhwhu | 来源:发表于2016-08-20 17:42 被阅读33次

故事背景:

假设有四个任务A、B、C、D ,它们之间存在如下依赖关系:A->C, B->C, C->D。如何实现这个应用场景。

解决方案一:GCD

dispatch_group_t group = dispatch_group_create();
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    
    dispatch_group_async(group, queue, ^{
        NSLog(@"%@ %@ : task A ", [NSThread currentThread], NSStringFromSelector(_cmd));
    });
    
    dispatch_group_async(group, queue, ^{
        NSLog(@"%@ %@ : task B ", [NSThread currentThread], NSStringFromSelector(_cmd));
    });
    
    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
    
    dispatch_queue_t queue2 = dispatch_queue_create("com.lh.serizalqueue", 0);
    
    dispatch_async(queue2, ^{
          NSLog(@"%@ %@ : task C ", [NSThread currentThread], NSStringFromSelector(_cmd));
    });
    
    dispatch_async(queue2, ^{
        NSLog(@"%@ %@ : task D ", [NSThread currentThread], NSStringFromSelector(_cmd));
    });

方案二:NSOperation

 NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
    NSBlockOperation *operationA = [NSBlockOperation blockOperationWithBlock:^{
         NSLog(@"%@ %@ : task A ", [NSThread currentThread], NSStringFromSelector(_cmd));
    }];
    NSBlockOperation *operationB = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"%@ %@ : task B ", [NSThread currentThread], NSStringFromSelector(_cmd));
    }];
    NSBlockOperation *operationC = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"%@ %@ : task C ", [NSThread currentThread], NSStringFromSelector(_cmd));
    }];
    NSBlockOperation *operationD = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"%@ %@ : task D ", [NSThread currentThread], NSStringFromSelector(_cmd));
    }];
    
    [operationC addDependency:operationA];
    [operationC addDependency:operationB];
    [operationD addDependency:operationC];
    
    [operationQueue addOperation:operationA];
    [operationQueue addOperation:operationB];
    [operationQueue addOperation:operationC];
    [operationQueue addOperation:operationD];

相关文章

  • 从任务依赖这件小事说起

    故事背景: 假设有四个任务A、B、C、D ,它们之间存在如下依赖关系:A->C, B->C, C->D。如何实现这...

  • 从“厕所”这件小事说起

    前几天,去电影院看了一部印度电影,名为《厕所英雄》,咋一看题目,确实不太讨巧,不过豆瓣评分还可以。 印度电影名字的...

  • 从吃药这件小事说起

    上了大学后突然发现身边的好多人都患有不同程度的胃病,大多数是浅表性胃炎。 这种病,说白了,仪器检查不出器质性的病变...

  • 创业这件小事——从炸鸡说起

    2014年12月31日,我许下了新一年的愿望:希望今年能戒掉吮指原味鸡。今天是2月14日,还没有到农历年,新历年和...

  • 从团购这件小事说起

    知乎上有网友说了这样一个故事:几个朋友提议聚会,他于是推荐了一家还不错的餐厅,说可以用团购券。结果就这么一件在他看...

  • 从飙脏话这件小事说起——关于“无知”

    最近无论是写文章还是群里讨论,我都会有一些爆粗口的行为,这让关心我的朋友们甚至有些担忧。我是说,请不要担心。从何说...

  • 由换灯这件小事说起

    这段时间气温逐渐升高,可是浴室的照明灯竟然坏了,实在是受不了两个浴霸的照明,如同头顶两颗太阳一样,酷热难耐,每次洗...

  • 大学生活,从兼职这件小事说起

    大学阶段大多数人都会选择做兼职,或许是为了体验生活,或许是为了挣零花钱。两者兼而有之,我们又何乐而不为。 我曾经在...

  • 从喝水这件事说起……

    最近买了个Hermes的骨瓷马克杯,才发现喝水原来是一件这么愉悦的事情。 台湾美学家汉堡德说,美要从茶杯开始…… ...

  • 从传销这件事说起

    作家慕容雪村在2010年卧底上饶某传销组织23天。目睹传销罪恶,写成《中国,少了一味药》一书。看完该书之后,胸中有...

网友评论

      本文标题:从任务依赖这件小事说起

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