[Xcode 實際操做]8、網絡與多線程-(23)多線程的同步與異步的區別

目錄:[Swift]Xcode實際操做html

本文將演示線程的同步與異步的區別。swift

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

異步線程的運行,是沒有按照順序執行的。async

 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         DispatchQueue.global(qos:.default).async
11         {
12             //添加一個執行4次的循環語句
13             for i in 0 ..< 4
14             {
15                 //在控制檯打印輸出日誌信息,
16                 print("Talking something:\(i)")
17                 //並使線程休眠1秒鐘,以方便觀察線程的運行
18                 sleep(1)
19             }
20         }
21         
22         //繼續建立一個異步線程,
23         DispatchQueue.global(qos:.default).async
24         {
25             //添加一個執行4次的循環語句
26             for i in 0 ..< 4
27             {
28                 //在控制檯打印輸出不一樣的日誌信息,
29                 print("Watching TV:\(i)")
30                 //並使線程休眠1秒鐘,以方便觀察線程的運行
31                 sleep(1)
32             }
33         }
34     }
35 
36     override func didReceiveMemoryWarning() {
37         super.didReceiveMemoryWarning()
38         // Dispose of any resources that can be recreated.
39     }
40 }

將異步線程方法(async),更改成同步線程方法(sync)。ide

同步線程的運行,是按照順序依次執行的。post

 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         DispatchQueue.global(qos:.default).sync
11         {
12             //添加一個執行4次的循環語句
13             for i in 0 ..< 4
14             {
15                 //在控制檯打印輸出日誌信息,
16                 print("Talking something:\(i)")
17                 //並使線程休眠1秒鐘,以方便觀察線程的運行
18                 sleep(1)
19             }
20         }
21         
22         //繼續建立一個同步線程,
23         DispatchQueue.global(qos:.default).sync
24         {
25             //添加一個執行4次的循環語句
26             for i in 0 ..< 4
27             {
28                 //在控制檯打印輸出不一樣的日誌信息,
29                 print("Watching TV:\(i)")
30                 //並使線程休眠1秒鐘,以方便觀察線程的運行
31                 sleep(1)
32             }
33         }
34     }
35 
36     override func didReceiveMemoryWarning() {
37         super.didReceiveMemoryWarning()
38         // Dispose of any resources that can be recreated.
39     }
40 }
相關文章
相關標籤/搜索