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

Dependency可以實(shí)現(xiàn)

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

添加依賴

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

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

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

如果要移除依賴的話

filterOp.removeDependency(op: decryptOp)

查看某個(gè)線程有哪些依賴

filterOp.dependencies

小心死鎖

如果Operation之間互相依賴,比如隊(duì)列A中的Operation1依賴Operation2, 而Operation2依賴Operation3,Operation3依賴Operation1, 這就會(huì)陷入互相等待的死鎖。

Operation之間傳值

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

decryptOp.addDependency(op: networkOp)

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

override func main() {

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

}



作者博客地址

系列文章鏈接

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

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

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

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