【作者前言】: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
- 異步'dispatch_async'
3)隊列 調度上都符合FIFO原則(先進先出 ---堆的規(guī)則),執(zhí)行上串行隊列依舊可控,并行隊列中不一定
①串行隊列 --->依次調度,執(zhí)行結果屬于排隊規(guī)則

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

image.png
