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