目錄:[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 }