多線程:單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的任務(wù),稱為多線程. 作用:節(jié)約CUP時(shí)間,避免程序卡死
注意:只有主線程有直接修改UI的能力.
多線程技術(shù)的實(shí)現(xiàn)方式有很多,層次越高的抽象程度越高,使用也方便(下面多線程抽象層次從低到高):
NSThread:是相對(duì)輕量級(jí)的,但是需要管理線程的生命周期,同步,加鎖問(wèn)題,會(huì)導(dǎo)致一定的性能開(kāi)銷;
NSOperation: 是基于OC實(shí)現(xiàn)的,以面向?qū)ο蟮姆绞椒庋b了需要執(zhí)行的操作,不必關(guān)系線程管理,同步問(wèn)題.
Grand Central Dispatch (簡(jiǎn)稱GCD):提供了一些新特性,運(yùn)行庫(kù)來(lái)支持多核并行編程.
? ? ? ? ? ? ? ? ? ? ? 線程開(kāi)銷
?線程的運(yùn)行需要使用計(jì)算機(jī)的內(nèi)存資源和CPU,這就產(chǎn)生了內(nèi)存和性能開(kāi)銷;
? ? ? ? ? ? ?并行,并發(fā),串行
并行:一組程序按獨(dú)立異步的速度執(zhí)行,即兩行代碼同時(shí)執(zhí)行,注意這里不是同一時(shí)間發(fā)生,并行只是任務(wù)執(zhí)行的時(shí)間上有重疊罷了,要區(qū)別于并發(fā);
并發(fā):在同一時(shí)間段內(nèi),兩個(gè)或多個(gè)程序同時(shí)開(kāi)始執(zhí)行;
串行:與并行相對(duì),幾個(gè)任務(wù)之間依次執(zhí)行,執(zhí)行任務(wù)的時(shí)間上沒(méi)有重疊;
? ? ? ? 同步異步
同步是指兩個(gè)任務(wù)之間的關(guān)系,一個(gè)任務(wù)需要等待另一個(gè)任務(wù)的反饋結(jié)果才能繼續(xù)執(zhí)行;
異步:與同步概念相對(duì)另一個(gè)任務(wù)不需要等待其他任務(wù)的反饋也可以繼續(xù)執(zhí)行;