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

2020-04-04  本文已影响0人  JaiUnChat

Dependency可以实现

添加依赖

给线程添加依赖非常得方便,只要设置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

}

作者博客地址

系列文章链接

上一篇下一篇

猜你喜欢

热点阅读