1.進程
顧名思義,進,正在進行的亚隅,程,程序纸厉,簡單來理解就是正在進行的程序
2.線程
一個進程至少有一條線程,程序運行后會默認開啟一條線程,就是‘主線程’,也叫‘UI線程’鼠证。它是用來顯示、刷新UI界面蝙斜、監(jiān)聽UI事件的名惩。
一條線程中的任務是順序執(zhí)行的,例如迅雷下載電影孕荠,一部下載完才會繼續(xù)下載。
3.多線程
一個進程可以開多個線程攻谁,還是迅雷下載電影稚伍,它可以下載多部電影,同時下載戚宦。
多線程的實現(xiàn)主流有三種个曙,另外一種基于C的,最原始,幾乎不用垦搬。
NSThread,更加面向對象呼寸,簡單易用,但缺點是需要手動管理生命周期猴贰,使用頻率偶爾使用对雪。
GCD,替代NSThread,基于C的米绕,能充分利用設備的多核瑟捣,自動管理生命周期,使用頻率經常使用栅干。
NSOperation,對GCD的重新封裝迈套,更加面向對象,多了一些簡單實用的功能碱鳞,自動管理生命周期桑李,使用頻率經常使用。
該怎么選擇呢窿给?
簡單追求安全點的話就選擇NSOperation,
大量并發(fā)芙扎,追求高效就選擇GCD
4.同步和異步
同步:一個線程必須等上一個線程執(zhí)行完了才能執(zhí)行當前的線程。例如迅雷下載線程必須等待網絡連接的線程完成之后才能進行填大。沒有聯(lián)網戒洼,怎么下載電影啊。
異步:線程之間沒有先后之分允华,一個線程不用等待其他線程就可以執(zhí)行圈浇,例如迅雷可以同時開啟多條線程,同時下載多部電影靴寂。
5.常用方法
dispatch_async
dispatch_barrier_async
dispatch_group_async