哈,終于有時(shí)間來(lái)整理一下這個(gè)多線程問(wèn)題了,好了費(fèi)話不多說(shuō),進(jìn)入正題。
我的拙見(jiàn)進(jìn)程線程線程串行并發(fā)并行異步iOS的多線程應(yīng)用有四種代碼寫(xiě)的方式Pthread 這個(gè)方式我就沒(méi)用過(guò)好吧NSthread 這才是蘋(píng)果封裝的這個(gè)我也很少用GCD這個(gè)好用我自己常用- 創(chuàng)建隊(duì)列- 創(chuàng)建任務(wù)- 隊(duì)列組
進(jìn)程(PRogress)就是一個(gè)已運(yùn)行程序的實(shí)體,也是多個(gè)線程的一個(gè)容器。程序本身只是指令得集合,而進(jìn)程才是程序(那些指令)的真正運(yùn)行。每個(gè)進(jìn)程都是獨(dú)立的,都會(huì)在其專有的且受保護(hù)得內(nèi)存空間中。
現(xiàn)今分時(shí)系統(tǒng)得基本運(yùn)行單位。
線程(thread)它被包含在進(jìn)程之中,一條線程就是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù) 線程是進(jìn)程得基本執(zhí)行單元,一個(gè)進(jìn)程得所有任務(wù)都在線程中執(zhí)行。
1個(gè)線程中任務(wù)的執(zhí)行是串行的 如果在一個(gè)線程中執(zhí)行多個(gè)任務(wù),那么只能一個(gè)一個(gè)地順序執(zhí)行這些任務(wù) 同一時(shí)間一個(gè)線程只能執(zhí)行一個(gè)任務(wù)
一個(gè)cpu強(qiáng)行要處理多個(gè)線程,在宏觀上造成一種假象,假裝一起執(zhí)行,其實(shí)是交替執(zhí)行吧
多個(gè)核一起走,真正的一起來(lái)處理
異步是最終目的,多線程只是實(shí)現(xiàn)異步的一種手段。等待某事件的過(guò)程中繼續(xù)做自己的事,不需要等待這一事件完成后再工作。和同步相對(duì)。
好吧以上就是我理解的,還有些不足,還請(qǐng)吊大的指出來(lái)
就是一套多系統(tǒng)通用的多線程API,移植性很強(qiáng)。在iOS可以用但是是基于c語(yǔ)言的,這酸爽。
可以完全面向?qū)ο?,所有我們直接操控線程對(duì)象。
這個(gè)就是直觀,而且好用,代碼簡(jiǎn)潔。是蘋(píng)果為多核的并行運(yùn)算提出的解決方案,所以會(huì)自動(dòng)合理地利用更多的CPU內(nèi)核,它會(huì)自動(dòng)管理線程的生命周期,我們只需要告訴干什么就行了,也是用c語(yǔ)言,結(jié)合了block(swift李叫做閉包),大家都喜歡用這個(gè)呢 具體介紹的話看這個(gè) http://www.jianshu.com/p/d56064507fb8
好的創(chuàng)建完隊(duì)列之后,就創(chuàng)建任務(wù)吧
現(xiàn)在的3.0將代碼的語(yǔ)法風(fēng)格都進(jìn)行了較大的改革,和之前的不太一樣,我先把理論弄下來(lái),然后再實(shí)現(xiàn)吧 詳細(xì)戳這 http://www.jianshu.com/p/8442576377a8 這里詳細(xì)的解釋了異步,同步,串行,并行都是在Swift 3.0下實(shí)現(xiàn)的
隊(duì)列組使我們能夠然所有的任務(wù)都執(zhí)行完之后,再來(lái)執(zhí)行語(yǔ)句。
let group = dispatch_group_create()let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)dispatch_group_async(group,queue){()-> Void in for _ in 0..<3{ println(NSThread.currentThread()) }}dispatch_group_async(group,disptach_get_main_queue()){()-> Void in for _ in 0..<8{ println(NSThread.currentThread()) }}dispatch_group_async(group,queue){()-> Void in for _ in 0..<5{ println(NSThread.currentThread()) }}//總得 (3.0之前的代碼,預(yù)計(jì)不能運(yùn)行了吧)dispatch_group_notify(group,dispatch_get_main_queue()){()->Void in println("完成/(NSThread.currentThread())")}主要是這個(gè)大神寫(xiě)的http://www.jianshu.com/p/0b0d9b1f1f19
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注