香港澳门葡京网址多线程:Operation(二)

1. Operation 设置依赖关系

先看看哪些设置operation的倚重关系。

什么吃依赖关系?有甚用什么?
打只假设咱们要举行一个纵音乐之付费App项目,需要通过登陆、付费、下载、播放四个步骤。其实一看即亮,这四独操作是产生先后顺序的,但只要有的操作都是多线程,咱们怎么决定顺序?
透过安装“优先级”?NO!优先级没有艺术干是工作。(相当给操作系统中之一头)

 

咱俩可由此安装依赖关系,建立于先后的相继。只有当一个 operation
所依赖之有着 operation 都实施得时,这个 operation 才会开始实行。

而,operation是得超过队列建立因关系之哦!

 

亟需细注意的是,要先行拿operation的指关系起好下再添加至队中。

 

代码很粗略,请圈:

香港澳门葡京网址 1香港澳门葡京网址 2

 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] in
15         self?.operationQueue.addOperations([op1,op2,op3,op4], waitUntilFinished: true)
16         DispatchQueue.main.async {
17             self?.activityIndicator.stopAnimating()
18         }
19     }
20    
21 }

View Code

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注