多線程01---多線程基礎,多線程01---基礎
1.進程和線程1.進程
什麼是進程
- 進程是指在系統中正在啟動並執行一個應用程式
- 每個進程之間是獨立的,每個進程均運行在其專用且受保護的記憶體空間內
比如同時開啟迅雷、Xcode,系統就會分別啟動2個進程
通過“活動監視器”可以查看Mac系統中所開啟的進程
2.線程
什麼是線程
- 1個進程要想執行任務,必須得有線程(每1個進程至少要有1條線程)
- 一個進程(程式)的所有任務都線上程中執行
比如使用酷狗播放音樂、使用迅雷下載電影,都需要線上程中執行:
3.線程的串列
1個線程中任務的執行是串列的
- 如果要在1個線程中執行多個任務,那麼只能一個一個地按順序執行這些任務
- 也就是說,在同一時間內,1個線程只能執行1個任務
比如在1個線程中下載3個檔案(分別是檔案A、檔案B、檔案C)
2.多線程的基本概念多線程
什麼是多線程
- 1個進程中可以開啟多條線程,多條線程可以並行(同時)執行不同的任務
- 進程 車間,線程 車間工人
- 多線程技術可以提高程式的執行效率
比如同時開啟3條線程分別下載3個檔案(分別是檔案A、檔案B、檔案C)
多線程的原理
- 同一時間,CPU只能處理1條線程,只有1條線程在工作(執行)
- 多線程並發(同時)執行,其實是CPU快速地在多條線程之間調度(切換)
- 如果CPU調度線程的時間足夠快,就造成了多線程並發執行的假象
思考:如果線程非常非常多,會發生什麼情況?
1. CPU會在N多線程之間調度,CPU會累死,消耗大量的CPU資源
2. 每條線程被調度執行的頻次會降低(線程的執行效率降低)
多線程的優缺點
多線程的優點
- 能適當提高程式的執行效率
- 能適當提高資源使用率(CPU、記憶體利用率)
多線程的缺點
- 建立線程是有開銷的,iOS下主要成本包括:核心資料結構(大約1KB)、棧空間(子線程512KB、主線程1MB,也可以使用-setStackSize:設定,但必須是4K的倍數,而且最小是16K),建立線程大約需要90毫秒的建立時間
- 如果開啟大量的線程,會降低程式的效能
- 線程越多,CPU在調度線程上的開銷就越大
- 程式設計更加複雜:比如線程之間的通訊、多線程的資料共用
3.多線程的應用多線程在iOS開發中的應用
什麼是主線程
- 一個iOS程式運行後,預設會開啟1條線程,稱為“主線程”或“UI線程”
主線程的主要作用
- 顯示\重新整理UI介面
- 處理UI事件(比如點擊事件、滾動事件、拖拽事件等)
主線程的使用注意
- 別將比較耗時的操作放到主線程中
- 耗時操作會卡住主線程,嚴重影響UI的流暢度,給使用者一種“卡”的壞體驗
耗時操作
如果將耗時操作放在主線程
如果將耗時操作放在子線程(後台線程、非主線程)
4.iOS中多線程的實現方案
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。