Swift多線程開發(fā) - 8. Operation依賴

Dependency可以實現(xiàn)

  • Operation等待先決條件達到再運行
  • Operation從其它Opration拿到值
    而且Operation的多任務依賴會比GCD的代碼更簡潔明了,以及避免循環(huán)引用的問題

添加依賴

給線程添加依賴非常得方便,只要設置Operationdependent屬性即可
假設要從網(wǎng)上下載一張圖并且揭秘然后添加濾鏡

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依賴Operation3,Operation3依賴Operation1, 這就會陷入互相等待的死鎖。

Operation之間傳值

比如要把在networkOp下載的圖片傳給decyptOp,那么在設置好依賴之后

decryptOp.addDependency(op: networkOp)

networkOp就會等decryptOp運行完成之后才開始運行了
所以只要在decryptOpmain中通過dependencies訪問networkOp即可。

override func main() {

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

}



作者博客地址

系列文章鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS開發(fā)中常用的幾種多線程方案,簡單做個小結(jié),方便日后查閱。 NSThead GCD NSOperation &...
    木木小林醬閱讀 360評論 0 1
  • iOS開發(fā)中常用的幾種多線程方案,簡單做個小結(jié),方便日后查閱。 Pthreads NSThead GCD NSOp...
    acqiang閱讀 468評論 0 4
  • 首先明確線程和進程的關(guān)系和區(qū)別: 一個程序至少有一個進程,一個進程至少有一個線程. 線程的劃分尺度小于進程,使得多...
    kkj1996閱讀 256評論 0 0
  • 主隊列 細心的同學就會發(fā)現(xiàn),每套多線程方案都會有一個主線程(當然啦,說的是iOS中,像 pthread 這種多系統(tǒng)...
    京北磊哥閱讀 416評論 0 1
  • 現(xiàn)在iOS的多線程方案主要有以下這幾種: GCD(Grand Central Dispatch):使用dispat...
    寒光冷劍閱讀 1,860評論 0 2

友情鏈接更多精彩內(nèi)容