[Swift通天遁地]4、網絡和線程-(3)線程組:使用DispatchGroup(調度組)對線程進行分組管理

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-nbwxcgvw-ku.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

目錄:[Swift]通天遁地Swiftgit

本文將演示線程組的使用。github

使用線程組能夠設置在完成一個或一組任務以後,再執行另外一個或一組任務。swift

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】微信

如今開始編寫代碼,實現線程組的功能。網絡

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4 
 5     override func viewDidLoad() {
 6         super.viewDidLoad()
 7         // Do any additional setup after loading the view, typically from a nib.
 8         
 9         //在控制檯輸出一條語句,用來標識任務的開始
10         print("Start the task and display the Loading animation.")
11         
12         //初始化一個調度組對象
13         let group = DispatchGroup()
14         //得到全局調度隊列
15         let globalQueue = DispatchQueue.global()
16         
17         //經過全局調度隊列的異步方法,執行調度組對象
18         globalQueue.async(group: group, execute:  {_ in
19             //在控制檯輸出一條語句,模擬一條具體的任務
20             print("Load a user picture from the remote server.")
21         })
22         
23         //經過全局調度隊列的異步方法,執行調度組對象
24         globalQueue.async(group: group, execute:  {_ in
25             //在控制檯輸出一條語句,模擬一條具體的任務。
26             //並設置該任務和第一個任務,都位於同一個調度組中。
27             print("Get the annual record of all transactions by user id.")
28         })
29         
30         //調用調度組的通知方法,當調度組中的任務所有完成以後,執行其餘的任務。
31         group.notify(queue: globalQueue, execute: {_ in
32             print("Complete all tasks and hide the Loading animation.")
33         })
34         
35         //經過全局調度隊列的異步方法,執行調度組對象
36         globalQueue.async(group: group, execute:  {_ in
37             //並設置該任務和前面的兩個任務,位於同一個調度組中,
38             //這樣當調度組中的三個任務所有執行完成以後,纔會執行調度組的通知方法
39             print("Get the collection of goods by user id.")
40         })
41     }
42 
43     override func didReceiveMemoryWarning() {
44         super.didReceiveMemoryWarning()
45         // Dispose of any resources that can be recreated.
46     }
47 }

當調度組中的任務所有執行完成以後,纔會執行調度組的通知方法。異步

相關文章
相關標籤/搜索