iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0

什麼是GCD(Grand Central Dispatch)?

GCD是Apple開發的多線程編程,是 Apple 將複雜且不易使用的 Thread 操作方式簡化過的 API。

GCD為多執行緒的運用,可將單一任務拆成多個小任務同時執行,或者同時執行多個任務,目的是縮短執行任務的時間,而最重要的是,確保不佔用主執行緒而影響到使用者的操作。

GCD有兩種

非同步(asynchronous)具備開啟新執行緒的能力,也具備跳過當前程式碼繼續往下執行的能力,相對於 synchronous,asynchronous 的 function 會馬上回傳值。asynchronous function 裡的工作會按照順序執行,但這個 function 不會等其它的動作執行完,它會馬上回傳值,因此 asynchronous function 不會造成它所在的執行緒阻塞。

同步(synchronous)不具備開啟新執行緒的能力,也不具備跳過當前程式碼繼續往下執行的能力,一個 Synchronous 的 Function 只有在完成裡面的工作後,才會回傳值。

GCD的優點

  1. GCD是Apple多核的並行運算提出的解決方案
  2. GCD會自動利用更多的的CPU内核(比如雙核、四核)
  3. GCD會自動管理線程的viewdidload
    工程師只需要只要跟GCD說要執行什麼程式,不需要寫任何管理的程式碼
    處理GCD時,會有三種Queue

Queue是執行程式碼的順序,採用FIFO(先進先出)的原則,執行順序從第一行開始。每一段程式碼執行完,才會進入下一段程式碼。

Main Queue
Main Queue有最高優先級,並且在主線程上運行。所有UI更新都該在主線程上完成,若沒有,在應用程式上會導致crashes

Global Queue
根據QOS(Quality of Service),此執行緒分為4種主要類型和一種默認類型,從最高順位到最低順位

  1. userInteractive
  2. userInitiated
  3. default
  4. utility
  5. background

這就是簡單介紹~~


上一篇
APNs-Day3
下一篇
第20天的感想!
系列文
Swift小教室230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言