Operation的addDependency操作

我们有7个任务task1, task2, task3, task4, task5, task6, task7并发执行,要实现一个功能,task1,task2,task3执行完之后,在执行task4,task5执行完之后执行task6,task4和task6执行完之后,在执行task7

我们要建立线程依赖,task4.addDependency(task1),表明task4一定会在task1执行完之后在执行,所以代码如下

let task1 = BlockOperation{
    sleep(3)
    print("task1")
}

let task2 = BlockOperation{
    sleep(2)
    print("task2")
}
let task3 = BlockOperation{
    sleep(1)
    print("task3")
}
let task4 = BlockOperation{
    print("task4")
}
let task5 = BlockOperation{
    print("task5")
}
let task6 = BlockOperation{
    print("task6")
}
let task7 = BlockOperation{
    print("task7")
}
let queueOperation = OperationQueue()
task4.addDependency(task1)
task4.addDependency(task2)
task4.addDependency(task3)

task6.addDependency(task5)
task7.addDependency(task6)
task7.addDependency(task4)
queueOperation.addOperation(task1)
queueOperation.addOperation(task2)
queueOperation.addOperation(task3)
queueOperation.addOperation(task4)
queueOperation.addOperation(task5)
queueOperation.addOperation(task6)
queueOperation.addOperation(task7)

task1, task2, task3是异步执行的,但是task4一定在task1,task2,task3之后执行,task6一定在task5之后执行,task7一定在task4和task6之后执行,我电脑的打印顺序如下

task5
task6
task3
task2
task1
task4
task7
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Dart中的异步模型 在之前的开发中,经常会遇到耗时操作: 比如网络请求、文件读取等等; 如果主线程一直等待...
    沉江小鱼阅读 889评论 0 3
  • Datawhale暑期组队学习计划 马上就要开始啦 这次共组织15个组队学习 涵盖了AI领域从理论知识到动手实践的...
    布客飞龙阅读 878评论 0 1
  • 最近一直都在跟清华大学的操作系统课程,这个课程最大的特点是有一系列可以实战的操作系统实验。这些实验总共有8个,我在...
    RdouTyping阅读 5,239评论 0 4
  • 一、Dart的异步模型 1.1 程序中的耗时操作 开发中的耗时操作: 在开发中,经常会遇到一些耗时的操作,比如网络...
    爱玩游戏的iOS菜鸟阅读 674评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,566评论 16 22