你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發中的gcd多線程tips

iOS開發中的gcd多線程tips

編輯:IOS開發綜合

本篇文章會持續更新:

我們經常用到的:


dispatch_async(dispatch_get_global_queue(0, 0), ^{ // 處理耗時操作的代碼塊 //通知主線程刷新 dispatch_async(dispatch_get_main_queue(), ^{ //回調或者說是通知主線程刷新 }); }); 

其中main_queue是系統默認的串行隊列,global_queue是系統默認的並行隊列。

什麼是串行隊列(Serial)?

創建任意個數的串行隊列,每個隊列依次執行添加的任務,一個隊列同一時刻只能執行一個任務(串行),但是各個隊列之間不影響,可以並發執行。每個隊列中的任務運行在一個由各自串行隊列維護的獨立線程上,一個隊列中只有一個線程。

什麼是並行隊列(Concurrent)?

並行隊列是不允許自己創建的,系統中存在三個不同優先級的並行隊列。並行隊列依舊按照任務添加的順序啟動任務,但是,後一個任務無須等待前一個任務執行完畢,而是啟動第一個任務後,立即啟動下一個任務。至於同一時刻允許同時運行多少個任務有系統決定。任務各自運行在並行隊列為他們提供的獨立線程上,並行隊列中同時運行多少個任務,就必須維護多少個線程。

gcd中還有一個概念叫做主調度隊列

主調度隊列(main dispatch queue)
主調度隊列中的任務運行在應用程序主線程上,所以,如果你要修改應用程序的界面,他是唯一的選擇。

如下:

 
dispatch_async(dispatch_get_main_queue(), ^{ //跟新界面的操作 });

只執行一次:


static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // 這裡寫的代碼只會被執行一次 }); 

如果你收集有實用的關於gcd的用法,歡迎分享給我,直接在文章下面評論即可

我的微信公眾號:


iOSDevTip

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved