国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS開發之四張圖說明GCD(GrandCentralDispatch)附Test源碼

2019-11-14 20:31:47
字體:
來源:轉載
供稿:網友

首先,先介紹幾個概念:GCD,隊列,串行,并行,同步,異步。                                                                       

GCD(Grand Central Dispatch):

偉大的蘋果公司開發的一種多核多線程的解決方案。

    • 是基于C語言的底層API
    • 用Block定義任務,使用起來非常靈活便捷
    • 提供了更多的控制能力以及操作隊列中所不能使用的底層函數

GCD的基本思想就是就將操作s放在隊列s中去執行

  • 操作使用Blocks定義
  • 隊列負責調度任務執行所在的線程以及具體的執行時間
  • 隊列的特點是先進先出(FIFO)的,新添加至對列的操作都會排在隊尾
  • GCD的函數都是以dispatch(分派、調度)開頭的

隊列(FIFO):

隊列是一種先進先出的組織方式,我看到最搞笑也很形象的解釋是:(隊列和棧的區別:吃多了拉是隊列,吃多了吐是棧)。

  • 串行隊列,隊列中的任務只會順序執行
  • 并行隊列,隊列中的任務通常會并發執行

串行和并行的概念若還是不清楚的,我再舉個例子:有10個人在超市買完東西同時到一個收銀點排隊依次結帳走人,前一個結帳操作不完成,后一個就得等著。這就是典型的串行。10個人去不同的10個收銀點同時結帳,誰先結完帳誰就先走。這就是并行。還是不明白的話請看下面例子。

同步和異步(更具體的請看百科)

  • 異步操作(dispatch_async) ,會并發執行,無法確定任務的執行順序
  • 同步操作(dispatch_sync),會依次順序執行,能夠決定任務的執行順序

請看下面四幅圖片:                                                                                            

1

 

 

 

2

 

 

 

 

 

3

 

 

4

 

 

 

請注意:在并行隊列中,異步任務的位置是沒有意義的,即不管不放在什么位置,都會并發的去執行!

測試源碼鏈接:http://pan.baidu.com/s/1bnCd8HT

以上純屬個人理解,水平有限,若有錯誤歡迎來噴!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 银川市| 儋州市| 冕宁县| 寿阳县| 泸州市| 综艺| 郎溪县| 鹤庆县| 怀宁县| 准格尔旗| 巴南区| 廉江市| 全椒县| 苗栗市| 西宁市| 焦作市| 镇安县| 淮北市| 和顺县| 五莲县| 温泉县| 敦煌市| 五常市| 万年县| 常德市| 华坪县| 同德县| 元阳县| 米林县| 洪雅县| 平昌县| 桦川县| 泰和县| 正定县| 合川市| 青铜峡市| 凤山市| 昌都县| 合川市| 池州市| 文安县|