iOS 進(jìn)程和線程的區(qū)別

一 : 基本概念

1.0? 線程

線程是CPU調(diào)度的最小單元;

線程的作用:執(zhí)行app的代碼;

?一個(gè)進(jìn)程(App)至少有一個(gè)線程,這個(gè)進(jìn)程叫做主線程;

2.0? 進(jìn)程

在iOS 中 一個(gè)進(jìn)程就是一個(gè)正在運(yùn)行的一個(gè)應(yīng)用程序;? 比如 QQ.app? ,而且一個(gè)app只能有一個(gè)進(jìn)程 不像安卓支持多個(gè)進(jìn)程。

每一個(gè)進(jìn)度都是獨(dú)立的,每一個(gè)進(jìn)程均在專門且手保護(hù)的內(nèi)存空間內(nèi);

iOS中是一個(gè)非常封閉的系統(tǒng),每一個(gè)App(一個(gè)進(jìn)程)都有自己獨(dú)特的內(nèi)存和磁盤空間,別的App(進(jìn)程)是不允許訪問的(越獄不在討論范圍);

所以,在iPhone中下載了兩種音樂播放器,下載的音樂歌曲卻是不能共享的!跟安卓完全不同!?

進(jìn)程 是系統(tǒng)資源分配和調(diào)度的一個(gè)獨(dú)立單位,簡單的理解就是用來幫程序占據(jù)一定的存儲空間等的資源。進(jìn)程擁有自己獨(dú)立的位置空間,在沒有經(jīng)過進(jìn)程本身允許的情況下,其他進(jìn)程不能訪問改進(jìn)程的地址空間

在 iOS 中? UIApplication? 這個(gè) 類是 是 進(jìn)程相關(guān)的操作的。比如? 進(jìn)程A(程序A) 調(diào)用另外一個(gè)進(jìn)程B(程序B) 。? 打開iOS 系統(tǒng)的瀏覽器等 都是 這個(gè)類 來負(fù)責(zé)。

二者之間的區(qū)別:

線程是進(jìn)程的一部分,它是進(jìn)程中用來執(zhí)行任務(wù)的單位。一個(gè)進(jìn)程可以擁有多個(gè)線程,但最少要有一個(gè)主線程;每個(gè)線程不能獨(dú)立執(zhí)行,必須有一個(gè)父進(jìn)程;線程可以擁有自己的堆、棧、計(jì)數(shù)器和局部變量,一個(gè)進(jìn)程里的全部線程會共享該進(jìn)程的資源。線程是獨(dú)立運(yùn)行的,一個(gè)線程并不知道其它線程的存在,在線程運(yùn)行過程中隨時(shí)都有可能被掛起,方便其他線程運(yùn)行;線程是有優(yōu)先級的,當(dāng)然主線程的優(yōu)先級最高,在我們編程的時(shí)候也可以設(shè)置線程1執(zhí)行完畢后才執(zhí)行線程2。

進(jìn)程的并發(fā)性:處理器每次只執(zhí)行一個(gè)進(jìn)程,然后在多個(gè)進(jìn)程之間快速切換,依次來達(dá)到多個(gè)進(jìn)程在單個(gè)處理器上同時(shí)執(zhí)行的效果;

進(jìn)程的并行性:同一時(shí)刻,處理器同時(shí)執(zhí)行多個(gè)進(jìn)程;


多線程與多進(jìn)程的對比:

1.進(jìn)程之間不能共享內(nèi)存,線程可以

同一個(gè)進(jìn)程中的線程共享了改進(jìn)程的很多資源,包括:進(jìn)程虛擬空間、進(jìn)程代碼段、進(jìn)程共有數(shù)據(jù)等,因此線程之間更容易相互通信,多線程的運(yùn)行效率遠(yuǎn)遠(yuǎn)高于多進(jìn)程;

2.系統(tǒng)創(chuàng)建進(jìn)程的時(shí)候要為其分配系統(tǒng)資源,而創(chuàng)建線程則只需要很小一部分,因此多線程比多進(jìn)程來的更加容易;

3.多線程可以充分利用處理器(雙核或者多核),但是當(dāng)線程數(shù)量達(dá)到上限的時(shí)候,性能就不在提升了;

4.多線程的進(jìn)程中一個(gè)線程崩潰了就會導(dǎo)致進(jìn)程崩潰,如果是主線程崩潰會導(dǎo)致程序崩潰;

但是多進(jìn)程中子進(jìn)程崩潰了不會影響到其它進(jìn)程,程序穩(wěn)定性更好;

5.多線程需要控制線程之間的同步,而多進(jìn)程則需要控制和主進(jìn)程之間的交互;

6.如果兩個(gè)進(jìn)程之間要相互傳輸大量的數(shù)據(jù),會相當(dāng)影響性能,多進(jìn)程適合小數(shù)據(jù)量傳輸,密集運(yùn)算;

參考博客:http://blog.csdn.net/xgcyangguang/article/details/51236181

http://blog.csdn.net/yang198907/article/details/50621280

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 又來到了一個(gè)老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問題開始,來談?wù)劜?..
    tangsl閱讀 4,317評論 0 23
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,928評論 25 709
  • 總想寫點(diǎn)東西再睡, 嗯 我一直在默默信奉一種觀念,人性,決定了很多,相互作用的事情 理智下來想想,其實(shí)還是感覺突然...
    哦遇呢閱讀 137評論 0 0
  • 今天累了 心里面某個(gè)地方,突然像得了一場重感冒,所有的精氣神被猝不及防地?fù)魝€(gè)粉碎。 北京突然刮起了大風(fēng),單車踩起來...
    永遠(yuǎn)的蘋果樹閱讀 404評論 0 1

友情鏈接更多精彩內(nèi)容