iOS 多线程

iOS线程依赖

2016-04-21  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读