文章出處:https://www.jianshu.com/p/f3f67c82f5efwindows
程序:由源代碼生成的可執行應用。 (例如:QQ.weChat等 app)網絡
進程:一個正在運行的程序能夠看作一個進程,(例如:正在運行的QQ就是一個進程),進程擁有獨立運行所須要的所有資源多線程
線程:程序中獨立運行的代碼段。(例如:接收QQ消息的代碼)併發
一個進程是由一或多個線程組成,進程只負責資源的調度和分配,線程纔是程序真正的執行單元,負責代碼的執行。app
每一個正在運行的程序(即進程),至少包括一個線程,這個線程叫主線程函數
主線程在程序啓動時被建立,用於執行main函數性能
只有一個主線程的程序,稱做單線程程序spa
主線程負責執行程序的全部代碼(UI展示以及刷新,網絡請求,本地存儲等等)。這些代碼只能順序執行,沒法併發執行操作系統
擁有多個線程的程序,稱做多線程程序。線程
iOS容許用戶本身開闢新的線程,相對於主線程來說,這些線程,稱爲子線程
能夠根據須要開闢若干子線程
子線程和主線程都是獨立的運行單元,各自的執行互不影響,所以可以併發執行
單線程程序:只有一個線程,代碼順序執行,容易出現代碼阻塞(頁面假死)
多線程程序:有多個線程,線程間獨立運行,能有效地避免代碼阻塞,而且提升程序的運行性能
PS:
整理後筆記:
每個獨立 app都是一個進程,一個進程能夠是單線程或者多線程。單線程就是程序按順序依次運行,多線程有主線程和若干子線程,子主都是獨立單元運行,每一個線程擁有進程的全部共享資源,每線程獨立運行,可擁有各自的堆棧,計數器等,但每一個線程在任什麼時候候均可以被掛起,便於其它線程的運行,線程之間能夠共享內存,進程內存獨立;多線程須要添加自動釋放池,進程則不用
CPU只能運行一個進程、CPU將在多個進程之間輪流切換,速度驚人才不會使人感到卡頓
目前操做系統大多采用效率更高的搶佔式多任務策略,例如WindowsNT、windows2000以及UNIX/Linux等操做系統。