iOS 開發(fā)_GCD函數(shù)與隊列一、初探

【作者前言】:13年入圈,分享些本人工作中遇到的點點滴滴那些事兒,17年剛開始寫博客,高手勿噴!以分享交流為主,歡迎各路豪杰點評改進!

1.應用場景:

多線程神器---GCD,很多開發(fā)的場景中,我們都會使用到。

2.實現(xiàn)目標:

探究GCD,這個平時我們經(jīng)常會用,但是又不知道為什么的盲區(qū)???

3.代碼說明:【GCD核心:函數(shù)和隊列】

1)GCD的簡介:

什么是GCD???
GCD--->全稱 Grand Central Dispatch(重點在Dispatch。調度!)
純C語言,提供了非常多而且強大的函數(shù)
優(yōu)勢:

①GCD是蘋果公司為多核的并行運算提出的解決方案
②GCD會自動利用更多的CPU內核(比如雙核、四核)
③GCD會自動管理線程的生命周期(創(chuàng)建線程、調度任務、銷毀線程)程序員只需要告訴GCD想要執(zhí)行什么任務,不需要編寫任何線程管理代碼。

2)將任務添加到隊列,并且指定執(zhí)行任務的函數(shù)
  • 任務使用block封裝
  • 任務的block沒有參數(shù)也沒有返回值
  • 執(zhí)行任務的函數(shù)
    • 異步'dispatch_async'
      • 不用等待當前語句執(zhí)行完畢,就可以執(zhí)行下一條語句
      • 會開啟線程執(zhí)行block的任務
      • 異步是多線程的代名詞
    • 同步'dispatch_sync'
      • 必須等待當前語句執(zhí)行完畢,才會執(zhí)行下一天語句
      • 不會開啟線程
      • 在當前執(zhí)行block的任務


        image.png
3)隊列 調度上都符合FIFO原則(先進先出 ---堆的規(guī)則),執(zhí)行上串行隊列依舊可控,并行隊列中不一定

①串行隊列 --->依次調度,執(zhí)行結果屬于排隊規(guī)則


image.png

②并行隊列 --->并行調度,執(zhí)行結果屬于插隊規(guī)則, 執(zhí)行順序不能把握


image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容