iOS线程依赖

作者: _浅墨_ | 来源:发表于2016-04-21 11:13 被阅读1576次

1.线程依赖.
目前在 iOS 和 OS X 中有两套先进的同步 API 可供我们使用:NSOperation 和 GCD 。其中 GCD 是基于 C 的底层的 API ,而 NSOperation 则是 GCD 实现的 Objective-C API。 虽然 NSOperation 是基于 GCD 实现的,我们可以用NSOperation 轻易的实现一些 GCD 要写大量代码的事情。
操作队列(operation queue)是由 GCD 提供的一个队列模型的 Cocoa 抽象。GCD 提供了更加底层的控制,而操作队列则在 GCD 之上实现了一些方便的功能,这些功能对于 app 的开发者来说通常是最好最安全的选择。

//NSOperationQueue 线程之前添加依赖操作
-(void)dependency{
    /**
     假设有A、B、C三个操作,要求:
     1. 3个操作都异步执行
     2. 操作C依赖于操作B
     3. 操作B依赖于操作A
     */
    //创建一个队列
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    //可开辟线程的最大数量
    queue.maxConcurrentOperationCount = 3;

    //创建三个任务
    NSBlockOperation *operationA = [NSBlockOperation blockOperationWithBlock:^{
       NSLog(@"A任务当前线程为:%@", [NSThread currentThread]);
    }];

    NSBlockOperation *operationB = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"B任务当前线程为:%@", [NSThread currentThread]);
    }];

    NSBlockOperation *operationC = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"C任务当前线程为:%@", [NSThread currentThread]);
    }];

    //设置三个任务相互依赖
    // operationB 任务依赖于 operationA
    [operationB addDependency:operationA];
    // operationC 任务依赖于 operationB
    [operationC addDependency:operationB];


    //添加操作到队列中(自动异步执行任务,并发)
    [queue addOperation:operationA];
    [queue addOperation:operationB];
    [queue addOperation:operationC];
}

参考:

  1. http://blog.csdn.net/qxuewei/article/details/50897577
  2. http://blog.csdn.net/jasonblog/article/details/7352483

相关文章

  • iOS线程依赖

    1.线程依赖.目前在 iOS 和 OS X 中有两套先进的同步 API 可供我们使用:NSOperation 和 ...

  • iOS 多线程之间有依赖时的处理方式

    iOS 多线程之间有依赖时的处理方式

  • 如何自定义NSOperation

    在iOS中使用线程主要是GCD,和NSOperation 两种方式。 GCD 对线程依赖,线程取消支持的不是很好,...

  • iOS 线程列队依赖

    iOS的日常业务开发中,有的时候会出现诸如任务C和D要等待任务A和B结束,需要A和B的数据支持,此类的线程列队依赖...

  • iOS 线程同步和线程依赖

    相关概念 线程同步:不同线程下的任务要做到完成最终监听。适合所有任务都完成才能进行下一步的情况下。 线程依赖:即线...

  • 底层原理:多线程

    iOS中常见多线程方案 NSThread 、 GCD 和 NSOperation 底层都是依赖于 pthread ...

  • iOS-多线程1-GCD

    首先看一下iOS中多线程的实现方案 这些多线程方案的底层都是依赖pthread NSThread线程生命周期是程序...

  • iOS-面试题3-多线程

    目录: GCD 加锁方案 一. GCD 说一下iOS中多线程的实现方案 ① 这些多线程方案的底层都是依赖pthre...

  • iOS swift 多线程依赖

    记录一个可能会遇到的应用场景 当前有a,b,c,d,e,f六个任务,要求: a,b,c并发执行 d依赖a,b e依...

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

网友评论

    本文标题:iOS线程依赖

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