iOS中的線程與進程

首先說一下線程和進程的概念:

進程是處於運行過程中的程序,是系統資源分配和調度的一個獨立單位,簡單的理解就是用來幫程序佔據一定的存儲空間的。進程擁有自己獨立的位置空間,在沒有經過進程本身允許的情況下,其他進程不能訪問改進程的地址空間。

線程是進程的一部分,它是進程中用來執行任務的單位。一個進程可以擁有多個線程,但最少要有一個主線程;每個線程不能獨立執行,必須有一個父進程;線程可以擁有自己的堆、棧、計數器和局部變量,一個進程裏的全部線程會共享該進程的資源線程是獨立運行的,一個線程並不知道其它線程的存在,在線程運行過程中隨時都有可能被掛起,方便其他線程運行;線程是有優先級的,當然主線程的優先級最高,在我們編程的時候也可以設置線程1執行完畢後才執行線程2。

進程的併發性:處理器每次只執行一個進程,然後在多個進程之間快速切換,依次來達到多個進程在單個處理器上同時執行的效果;

進程的並行性:同一時刻,處理器同時執行多個進程;

 

多線程與多進程的對比:

1.進程之間不能共享內存,線程可以

同一個進程中的線程共享了改進程的很多資源,包括:進程虛擬空間、進程代碼段、進程共有數據等,因此線程之間更容易相互通信,多線程的運行效率遠遠高於多進程;

2.系統創建進程的時候要爲其分配系統資源,而創建線程則只需要很小一部分,因此多線程比多進程來的更加容易;

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

4.多線程的進程中一個線程崩潰了就會導致進程崩潰,如果是主線程崩潰會導致程序崩潰;

但是多進程中子進程崩潰了不會影響到其它進程,程序穩定性更好;

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

6.如果兩個進程之間要相互傳輸大量的數據,會相當影響性能,多進程適合小數據量傳輸,密集運算;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章