一忽刽、線程與進(jìn)程
進(jìn)程是資源分配的最小單元悴能,線程是CPU調(diào)度的基本單位晒杈。一個(gè)進(jìn)程奔潰之后在保護(hù)模式下不會(huì)對(duì)其他進(jìn)程產(chǎn)生影響,一個(gè)線程死掉會(huì)導(dǎo)致整個(gè)進(jìn)程死掉掖棉。
1、一個(gè)程序至少有一個(gè)進(jìn)程膀估,一個(gè)進(jìn)程至少有一個(gè)線程幔亥。
2、進(jìn)程之間很難共享資源察纯,同一個(gè)進(jìn)程中不同的線程資源共享帕棉。
二、線程理解
線程分為同步和異步饼记、隊(duì)列分為串行香伴、并行(并發(fā))(OC中還有主隊(duì)列、全局隊(duì)列)具则。
總線程數(shù)<=CPU數(shù)量:并行運(yùn)行
總線程數(shù)>CPU數(shù):并發(fā)運(yùn)行
并發(fā)當(dāng)有多個(gè)線程在操作時(shí),如果系統(tǒng)只有一個(gè)CPU,則它根本不可能真正同時(shí)進(jìn)行一個(gè)以上的線程即纲,它只能把CPU運(yùn)行時(shí)間劃分成若干個(gè)時(shí)間段,再將時(shí)間 段分配給各個(gè)線程執(zhí)行,在一個(gè)時(shí)間段的線程代碼運(yùn)行時(shí)博肋,其它線程處于掛起狀低斋。.這種方式我們稱之為并發(fā)(Concurrent)。
并行:當(dāng)系統(tǒng)有一個(gè)以上CPU時(shí),則線程的操作有可能非并發(fā)匪凡。當(dāng)一個(gè)CPU執(zhí)行一個(gè)線程時(shí)膊畴,另一個(gè)CPU可以執(zhí)行另一個(gè)線程,兩個(gè)線程互不搶占CPU資源病游,可以同時(shí)進(jìn)行唇跨,這種方式我們稱之為并行(Parallel)。?
三衬衬、線程的幾種方式
1轻绞、NSThread
· 建立線程簡(jiǎn)單快捷,可以直接操作線程對(duì)象
· 管理多個(gè)線程困難佣耐,因?yàn)橐芾硭纳芷?/p>
· 平時(shí)很少使用常用到的是?[NSThread currentThread]獲取當(dāng)前線程政勃。
2、GCD--Grand Central Dispatch
· 基于C語(yǔ)言的底層API
· 使用方便兼砖、靈活(常用)
3奸远、NSOperation/NSOprationqueue
· 基于GCD實(shí)現(xiàn)的一套Objective-C 的API
· 面向?qū)ο蟮木€程技術(shù),使用時(shí)操作的是他的子類如:?NSInvocationOperation讽挟,?NSBlockOperation
· 比GCD更容易操作?如:限制最大并發(fā)數(shù)量懒叛、操作之間的依賴關(guān)系