iOS 多線程GCD

一.簡介編程

GCD (Grand Central Dispatch)是Apple開發的多核編程的解決方法。app

二.優勢異步

1.GCD可用於多核的並行運算async

2.GCD自動利用更多CPU內核(雙核,四核)spa

3.GCD自動管理線程的生命週期(建立線程、調度任務、銷燬線程) ,只須要告訴GCD想要執行什麼任務,不須要編寫任何線程管理代碼線程

三.使用code

1.建立一個隊列(串行隊列或並行隊列)生命週期

// 串行隊列的建立方法隊列

dispatch_queue_t queue= dispatch_queue_create("test.queue", DISPATCH_QUEUE_SERIAL);開發

// 並行隊列的建立方法

dispatch_queue_t queue= dispatch_queue_create("test.queue", DISPATCH_QUEUE_CONCURRENT);

//主隊列 GCD自帶的一種特殊的串行隊列

//全部放在主隊列中的任務,都會放到主線程中執行

//可以使用dispatch_get_main_queue()得到主隊列

dispatch_queue_t queue = dispatch_get_main_queue();

2.將任務添加到隊列中,而後系統就會根據任務類型執行任務(同步執行或異步執行)

// 同步執行任務建立方法

  dispatch_sync(queue, ^{

    // 這裏聽任務代碼

  });

// 異步執行任務建立方法

  dispatch_async(queue, ^{

    // 這裏聽任務代碼

  });

原理圖表:

  並行隊列 串行隊列 主隊列
同步(sync) 沒有開啓新線程,串行執行任務 沒有開啓新線程,串行執行任務 沒有開啓新線程,串行執行任務
異步(async) 有開啓新線程,並行執行任務 有開啓新線程(1條),串行執行任務 沒有開啓新線程,串行執行任務
 

四.其餘使用

GCD的柵欄方法dispatch_barrier_async

GCD的延時執行方法dispatch_after

GCD的一次性代碼(只執行一次)dispatch_once

GCD的快速迭代方法dispatch_apply

GCD的隊列組 dispatch_group

相關文章
相關標籤/搜索