美文网首页
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