1.什么是GCD
Grand Central Dispatch (GCD) 是 Apple 開發(fā)的一個(gè)多核編程的解決方法。該方法在 Mac OS X 10.6 雪豹中首次推出,并隨后被引入到了 iOS4.0 中。GCD 是一個(gè)替代諸如 NSThread, NSOperationQueue, NSInvocationOperation 等技術(shù)的很高效和強(qiáng)大的技術(shù)。
GCD 和 block 的配合使用,可以方便地進(jìn)行多線程編程。
嗯嗯,這段話來自 唐巧的技術(shù)博客
iOS中多線程實(shí)現(xiàn)多線程的一種方式。
2.并發(fā)&并行
所謂的“并發(fā)”,英文翻譯是concurrent。要注意和“并行(parallelism)”的區(qū)別。
并發(fā)指的是一種現(xiàn)象,一種經(jīng)常出現(xiàn),無可避免的現(xiàn)象。它描述的是“多個(gè)任務(wù)同時(shí)發(fā)生,需要被處理”這一現(xiàn)象。它的側(cè)重點(diǎn)在于“發(fā)生”。
比如有很多人排隊(duì)等待檢票,這一現(xiàn)象就可以理解為并發(fā)。
就是,在同一個(gè)時(shí)間點(diǎn),發(fā)生了許多件事情。(或者說,產(chǎn)生了許多個(gè)任務(wù))在一個(gè)時(shí)間點(diǎn),有好多人同時(shí)出生,來到這個(gè)世界。(世界很美好,不要做碼農(nóng)啊~)。
并行指的是一種技術(shù),一個(gè)同時(shí)處理多個(gè)任務(wù)的技術(shù)。它描述了一種能夠同時(shí)處理多個(gè)任務(wù)的能力,側(cè)重點(diǎn)在于“運(yùn)行”。
比如景點(diǎn)開放了多個(gè)檢票窗口,同一時(shí)間內(nèi)能服務(wù)多個(gè)游客。這種情況可以理解為并行。
就是,在同一個(gè)時(shí)間點(diǎn),有多個(gè)任務(wù)在執(zhí)行。(同一時(shí)間內(nèi)能服務(wù)多個(gè)游客。)同一時(shí)間內(nèi),許多游客都在游玩。
3.并行&串行
串行: 并行的反義詞就是串行,表示任務(wù)必須按順序來,一個(gè)一個(gè)執(zhí)行,前一個(gè)執(zhí)行完了才能執(zhí)行后一個(gè)。
4.同步&異步
同步和異步,就是在問。需要任務(wù)執(zhí)行完,再返回嗎?需要,就是同步。不需要就是異步。
如在第一行調(diào)用foo()方法,那么程序運(yùn)行到第二行的時(shí)候,foo方法肯定是執(zhí)行完了。這就是同步。
所謂的異步,就是允許在執(zhí)行某一個(gè)任務(wù)時(shí),函數(shù)立刻返回,但是真正要執(zhí)行的任務(wù)稍后完成。那么上面的例子,執(zhí)行到第二行時(shí),foo()方法或許還沒有執(zhí)行完成。
參考鏈接