IOS多線程漫漫談(ProcessandThread)

前言 

創(chuàng)新互聯(lián)建站專(zhuān)注于山海關(guān)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供山海關(guān)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),山海關(guān)網(wǎng)站制作、山海關(guān)網(wǎng)頁(yè)設(shè)計(jì)、山海關(guān)網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造山海關(guān)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供山海關(guān)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

時(shí)間就是一把殺豬刀,歲月更是毫不留情的在我英俊的臉上留下痕跡!恨呀,這就開(kāi)始了我的社會(huì)之旅。2015年上海,在拉鉤網(wǎng)中投遍了IOS實(shí)習(xí)崗,兩家面試!在面試中受到的打擊著實(shí)不清呀,其中心酸就不一一道來(lái)了。在學(xué)校時(shí)候?qū)W的不認(rèn)真,學(xué)習(xí)的時(shí)候又沒(méi)有筆記,知識(shí)在又沒(méi)有實(shí)際的項(xiàng)目實(shí)踐,最后的結(jié)果就是什么都知道都聽(tīng)過(guò),但是具體的什么都說(shuō)不出來(lái)!所以毅然決然的決定投身于寫(xiě)博客的大隊(duì)伍中,與各位共勉。

(PS:既然是社會(huì)之旅,除了技術(shù)的敲門(mén)磚,當(dāng)然還有就是做人了!我只能說(shuō)我被HR給刷過(guò))

漫漫談(Process and Thread)

作為資深的菜鳥(niǎo)級(jí)應(yīng)屆畢業(yè)生,我向大家承若本文包括以后的所有文章都將是“原創(chuàng)”------那是不可能的,是原創(chuàng)加借鑒啦~~(其實(shí)就是“抄襲了”,我相信寫(xiě)過(guò)畢業(yè)論文的童鞋們都身+“深”有體會(huì)!)

首先來(lái)談?wù)?process(傳說(shuō)中的進(jìn)程) and thread(傳說(shuō)中的線程),不知道大家有沒(méi)有發(fā)現(xiàn)中文的進(jìn)程與線程是很有迷惑性(TMD就一字之差),但是當(dāng)你洋氣的用 process and thread to read them 你就會(huì)問(wèn)“他們”之間有半毛錢(qián)關(guān)系嗎,確實(shí)有點(diǎn)關(guān)系的!只能說(shuō)大english確實(shí)很有意思的,英語(yǔ)不行的”鳥(niǎo)“兒們?cè)撓蛭覀兇骵nglish妥協(xié)了,因?yàn)樗行碌募夹g(shù)一開(kāi)始都是english版的,不要否認(rèn)!swift剛出就只有就是英文版的。雖然我也是”四級(jí)“飄過(guò)的渣渣!

Process VS Thread 

借鑒地址:http://www.programmerinterview.com/index.php/operating-systems/thread-vs-process/

process (進(jìn)程):A process is an executing  instance of an application. 

                          進(jìn)程是APP運(yùn)行(執(zhí)行)的實(shí)例

Thread (線程):A thread is a path of execution within a process.

                         線程是進(jìn)程中的一條運(yùn)行(執(zhí)行)路徑。

看到這里我就有點(diǎn)像吐槽下教科書(shū)神馬的了,天書(shū)呀有木有!讀者們,別罵我從洋媚外IOS 多線程漫漫談(Process and Thread)

一個(gè)App啟動(dòng)或者說(shuō)運(yùn)行的時(shí)候,就會(huì)在Operation System(操作系統(tǒng))中創(chuàng)建一個(gè)process,是windows的同學(xué)打開(kāi)你的 the task manager(任務(wù)管理器)看下你早已運(yùn)行的QQ是有多少個(gè)processes? 有多少Threads? 用mac的同學(xué)打開(kāi)你們的Activity Monitor,本人用的是mac503 五年前的產(chǎn)品了,附圖如下: IOS 多線程漫漫談(Process and Thread)

大家看我們的大QQ,QQ在Activity Monitor中只是mac運(yùn)行中 All Processes中的一個(gè)process,而QQ中的Threads有9條。這樣就完美的詮釋了process(進(jìn)程)和 thread(線程)的概念。


下面來(lái)聊聊,進(jìn)程與線程之間的恩怨(process VS thread),那么他們之間的有什么不同呢?

先上英文版的:(借鑒地址:同上)

1. Threads are easier to create than processes since they 
don't require a separate address space.
						
2. Multithreading requires careful programming since threads 
share data strucures that should only be modified by one thread
at a time.  Unlike threads, processes don't share the same 
address space.
						
3.  Threads are considered lightweight because they use far 
less resources than processes.
						
4.  Processes are independent of each other.  Threads, since they 
share the same address space are interdependent, so caution 
must be taken so that different threads don't step on each other.  
This is really another way of stating #2 above.
						
5.  A process can consist of multiple threads.

1、由于創(chuàng)建process(進(jìn)程)需要分配一個(gè)片單獨(dú)的地址空間(或者說(shuō)內(nèi)存空間),而thread是進(jìn)程中執(zhí)行的路徑,線程使用的地址空間(內(nèi)存空間)就是process(進(jìn)程)的空間,不需要額外消耗內(nèi)存創(chuàng)建線程。所以說(shuō)線程的創(chuàng)建比進(jìn)程容易。

2、原文翻譯:由于線程之間共享同一數(shù)據(jù)結(jié)構(gòu),在同一時(shí)間里只能由一個(gè)線程對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改,因此多線程編程需要非常小心,而對(duì)于進(jìn)程就不要擔(dān)心了,因?yàn)檫M(jìn)程之間都有各自獨(dú)立的地址空間。

見(jiàn)解:由于線程之間是共享同一數(shù)據(jù)結(jié)構(gòu)的,所以一旦線程很多,那么就會(huì)出現(xiàn)線程對(duì)同一數(shù)據(jù)修改的混亂問(wèn)題。所以在多線程編程時(shí)一定要思路清晰。

3、原文翻譯:線程被認(rèn)為是輕量級(jí)的,因?yàn)榫€程所需的資源比進(jìn)程少的多。

見(jiàn)解:在文章的原文有一句這樣子的話,我也挺認(rèn)同的:It’s important to note that a thread can do anything a process can do. 意思是:很有必要指出線程可以做到進(jìn)程可以做的任何東西。我們可以這樣理解,進(jìn)程就是悟空,線程就是就是悟空的分身了。悟空的分身可以干悟空能干的事情,但是分身就是分身實(shí)力有限,所以可以被認(rèn)為是輕量級(jí)的;而悟空本人就牛逼多了,所以被認(rèn)為是重量級(jí)的(heavyweight)。

4、原文翻譯:進(jìn)程之間是相互獨(dú)立的,而線程之間由于分享的是同一地址空間所以是線程之間是不獨(dú)立的。所以一定要小心線程之間的“互踩”(同時(shí)對(duì)一個(gè)對(duì)象進(jìn)行操作)。

5、原文翻譯:一個(gè)進(jìn)程可以由多個(gè)線程組成。

ps:第一次寫(xiě)博文,不好之處歡迎吐槽!由于操作系統(tǒng)知識(shí)忘的差不多了,改天一定把補(bǔ)上!

文章標(biāo)題:IOS多線程漫漫談(ProcessandThread)
文章起源:http://bm7419.com/article22/gocccc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)網(wǎng)站制作、App開(kāi)發(fā)、面包屑導(dǎo)航、響應(yīng)式網(wǎng)站網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化