進程
- 什么是進程
- 進程是指在系統運行正在運行的一個應用程序
- 每個進程之間是獨立的,每個進程均運行在其專用且受保護的內存空間內
比如同時打開QQ,Xcode,系統就會分別啟動兩個進程 - 通過"活動監視器"可以查看Mac系統所開啟的進程
線程
- 什么是線程
- 一個進程想要執行任務,必須得有線程(每個1個線程至少要有一個線程)
- 線程是進程的基本執行單元,一個進程(程序)的所有任務都在線程執行
- 比如使用酷狗播放器,使用迅雷下載電影都需要在線程總執行
線程的串行
- 1個線程中的任務的執行時串行的
- 如果要在一個線程中執行多個任務,那么只能一個一個地按順序執行這些任務
也就是說,在同一個時間內,一個線程只能執行一個任務- 也就是說同一個時間內,一個線程只能執行一個任務
多線程
- 什么是多線程
- 1個線程中可以開啟多條線程,每個線程可以并行(同時)執行不同的任務
- 進程 ->車間,線程 ->車間工人
- 多線程技術可以提高程序的執行效率
多線程的原理
- 多線程的原理
- 同一個時間內,CPU只能處理1條線程,也只有1條線程在工作(執行)
- 多線程并發(同時)執行,其實就是CPU快速地在多條線程之間調度(切換)
- 如果CPU調度線程的時間足夠快,就造成類多線程并發執行的假象
- 如果線程非常非常多,就會發生
- CPU會在N多線程之間切換,CPU就會累死,消耗大量的CPU資源
- 每條線程被調度執行的頻率會降低(線程的執行效率降低)
多線程的優缺點
-
多線程的優點
- 能適當提高程序的執行效率
- 能適當的提高CPU的利用率(CPU,內存利用率)
-
多線程的缺點
- 開啟線程需要占用一定的內存空間(默認情況下,主線程占用1M,子線程占用512KB),如果開啟用大量的內存空間,降低程序的性能
- 線程越多,CPU在調度線程的開銷就越大
- 程序設計更加復雜:比如線程之間的通信,多線程的數據分享
多線程在iOS開發中的應用
-
什么是主線程
- 一個iOS程序運行后,默認會開啟1條線程,稱為"主線程"或"UI線程"
- 主線程的主要作用
- 顯示/刷新UI界面
- 處理UI事件(比如點擊事件/滾動事件/拖拽事件等)
-
主線程使用注意
- 別將耗時的操作放在主線程中
- 耗時操作會卡主線程,嚴重影響UI的流暢度,給用戶一種"卡"的壞體驗