-(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:^{

//  A 任务

}];

NSBlockOperation *operationB = [NSBlockOperation blockOperationWithBlock:^{

// B 任务

}];

NSBlockOperation *operationC = [NSBlockOperation blockOperationWithBlock:^{

// C 任务

}];

//设置三个任务相互依赖

// operationB 任务依赖于 operationA

[operationB addDependency:operationA];

//operationC 任务依赖于 operationB

[operationC addDependency:operationB];

//添加操作到队列中(自动异步执行任务,并发)

[queue addOperation:operationA];

[queue addOperation:operationB];

[queue addOperation:operationC];

}

//A,B,C 三个任务 依次执行 程序中的操作,事件之间的相互依赖关系 按顺序执行

最新文章

  1. Transactional Replication2:在Subscriber中,主键列是只读的
  2. FTP上传
  3. Java Spring各种依赖注入注解的区别
  4. (2018干货系列五)最新UI设计学习路线整合
  5. 5.QT中关于HTTPClient相关的操作,Json数据传输
  6. RSA算法原理——(3)RSA加解密过程及公式论证
  7. 通过hash实现前端路由
  8. Linux运维小知识
  9. CF963D Frequency of String
  10. c# 实现获取汉字十六进制Unicode编码字符串
  11. Java显示指定类型的文件
  12. 【Android实验】组件通信Intent
  13. python-day11--函数
  14. C程序第四次作业
  15. blktrace未公开选项网络保存截取数据
  16. Repository模式中,Update总是失败及其解析(转)
  17. mac 系统安装VM虚拟机打开时报错,提示不是虚拟磁盘的解决方式。
  18. 团队项目个人进展——Day04
  19. Node.js:Buffer(缓冲区)介绍及常用方法
  20. Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码

热门文章

  1. Github windows客户端简单上手教程
  2. 用phpcms如何将静态页面制作成企业网站,头部加尾部
  3. hadoop编译
  4. java初级开发程序员(第四单元)
  5. BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)
  6. 实例了解js面向对象的封装和继承等特点
  7. jQuery基本知识
  8. 一个不错的windows编程网址
  9. 基于Hadoop的改进Apriori算法
  10. ConcurrentHashMap源码分析