美文网首页
Swift多线程开发 - 8. Operation依赖

Swift多线程开发 - 8. Operation依赖

作者: JaiUnChat | 来源:发表于2020-04-04 10:59 被阅读0次

Dependency可以实现

  • Operation等待先决条件达到再运行
  • Operation从其它Opration拿到值
    而且Operation的多任务依赖会比GCD的代码更简洁明了,以及避免循环引用的问题

添加依赖

给线程添加依赖非常得方便,只要设置Operationdependent属性即可
假设要从网上下载一张图并且揭秘然后添加滤镜

let networkOp = NetworkOperation()
let decryptOp = DecryptOperation()
let filterOp = FilterOperation()

decryptOp.addDependency(op: networkOp)
filterOp.addDependency(op: decryptOp)

如果要移除依赖的话

filterOp.removeDependency(op: decryptOp)

查看某个线程有哪些依赖

filterOp.dependencies

小心死锁

如果Operation之间互相依赖,比如队列A中的Operation1依赖Operation2, 而Operation2依赖Operation3Operation3依赖Operation1, 这就会陷入互相等待的死锁。

Operation之间传值

比如要把在networkOp下载的图片传给decyptOp,那么在设置好依赖之后

decryptOp.addDependency(op: networkOp)

networkOp就会等decryptOp运行完成之后才开始运行了
所以只要在decryptOpmain中通过dependencies访问networkOp即可。

override func main() {

    let networkOp = dependencies.first as! newworkOp
    newworkOp.downloadedImage

}

作者博客地址

系列文章链接

相关文章

网友评论

      本文标题:Swift多线程开发 - 8. Operation依赖

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