天天看點

iOS開發多線程篇—GCD的基本使用

一、主隊列介紹

主隊列:是和主線程相關聯的隊列,主隊列是gcd自帶的一種特殊的串行隊列,放在主隊列中得任務,都會放到主線程中執行。

提示:如果把任務放到主隊列中進行處理,那麼不論處理函數是異步的還是同步的都不會開啟新的線程。

擷取主隊列的方式:

dispatch_queue_t queue=dispatch_get_main_queue();

(1)使用異步函數執行主隊列中得任務,代碼示例:

iOS開發多線程篇—GCD的基本使用
iOS開發多線程篇—GCD的基本使用

執行效果:

iOS開發多線程篇—GCD的基本使用

(2)使用同步函數,在主線程中執行主隊列中得任務,會發生死循環,任務無法往下執行。示意圖如下:

iOS開發多線程篇—GCD的基本使用

二、基本使用

1.問題

任務1和任務2是在主線程執行還是子線程執行,還是單獨再開啟一個新的線程?

iOS開發多線程篇—GCD的基本使用
iOS開發多線程篇—GCD的基本使用

列印結果:

iOS開發多線程篇—GCD的基本使用

2.開啟子線程,加載圖檔

iOS開發多線程篇—GCD的基本使用
iOS開發多線程篇—GCD的基本使用

顯示效果:

iOS開發多線程篇—GCD的基本使用
iOS開發多線程篇—GCD的基本使用

要求使用gcd的方式,在子線程加載圖檔完畢後,主線程拿到加載的image重新整理ui界面。

iOS開發多線程篇—GCD的基本使用
iOS開發多線程篇—GCD的基本使用
iOS開發多線程篇—GCD的基本使用

好處:子線程中得所有資料都可以直接拿到主線程中使用,更加的友善和直覺。

三、線程間通信

從子線程回到主線程

iOS開發多線程篇—GCD的基本使用
iOS開發多線程篇—GCD的基本使用

繼續閱讀