多線程:Operation(二),多線程operation

來源:互聯網
上載者:User

多線程:Operation(二),多線程operation
1. Operation 設定依賴關係

先看看如何設定operation的依賴關係。

啥叫依賴關係?有啥用啊?
打個比方咱們要做一個聽音樂的付費App項目,需要經過登陸、付費、下載、播放四個步驟。其實一看就明白,這四個操作是有先後順序的,但假如所有的操作都是多線程,咱們怎麼控制順序?
通過設定“優先順序”?NO!優先順序沒有辦法幹這個事情。(相當於作業系統中的同步)

 

我們可以通過設定依賴關係,建立起先後的順序。只有當一個 operation 所依賴的所有 operation 都執行完成時,這個 operation 才能開始執行。

並且,operation是可以跨隊列建立依賴關係的噢!

 

需要小小注意的是,要先將operation的依賴關係建立好之後再添加到隊列中。

 

代碼很簡單,請看:

 1 fileprivate func startDepencyDemo() { 2    operationQueue.maxConcurrentOperationCount = 4 3     self.activityIndicator.startAnimating() 4     guard let url = URL(string: "https://placebeard.it/355/140") else {return } 5     let op1 = convenienceOperation(setImageView: imageView1, withURL: url) 6     let op2 = convenienceOperation(setImageView: imageView2, withURL: url) 7     op2.addDependency(op1) 8     let op3 = convenienceOperation(setImageView: imageView3, withURL: url) 9     op3.addDependency(op2)10     let op4 = convenienceOperation(setImageView: imageView4, withURL: url)11     op4.addDependency(op3)12     13     DispatchQueue.global().async {14         [weak self] in15         self?.operationQueue.addOperations([op1,op2,op3,op4], waitUntilFinished: true)16         DispatchQueue.main.async {17             self?.activityIndicator.stopAnimating()18         }19     }20    21 }
View Code

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.