iOS開發多執行緒篇-概述

weixin_33751566發表於2017-03-21

iOS開發多執行緒篇<概述>

一.程式和執行緒

1.什麼是程式

程式是指在系統中正在執行的一個應用程式

每個程式之間是獨立的,每個程式均執行在其專用且受保護的記憶體空間內

比如:同時開啟QQ,Xcode,系統就會分別啟動2個程式

通過”活動監視器”可以檢視Mac系統中所開啟的程式

2.什麼是執行緒

1個程式要想執行任務,必須得有執行緒(每1個程式至少要有1條執行緒)

執行緒是程式的基本執行單元,一個程式(程式)的所有任務都線上程中執行

比如使用網易雲音樂播放音樂、下載音樂,都需要在縣城中執行

3.執行緒的序列

1個執行緒中任務的執行是序列的

如果要在1個執行緒中執行多個任務,那麼只能一個一個地按順序執行這些任務

也就是說,在同一時間內,1個執行緒只能執行1個任務

比如:網易雲音樂在一個執行緒中下載音樂,如果選擇每次只下載一首,那麼下載音樂這個執行緒會序列執行

二:多執行緒

1.什麼是多執行緒

1個程式中可以開啟多條執行緒,每條執行緒可以並行(同時)執行不同的任務

程式 ->網易雲音樂,執行緒->網易雲音樂播放、下載執行緒

多執行緒技術可以提高程式的執行效率

比如需要下載100首音樂,每首下載時間需要1分鐘

單程式需要100分鐘全部下載完

開啟三條執行緒下載,只需要33分鐘下載完成(不考慮網路限制)

2.多執行緒的原理

同一時間,CPU只能處理1條執行緒,只有1條執行緒在工作(執行)

多執行緒(併發)執行,其實是CPU快速的在多條執行緒之間排程(切換)

如果CPU排程多執行緒的時間足夠快,就造成了多執行緒併發執行的假象

思考:如果多執行緒非常非常多,會發生什麼情況

CPU會在N多執行緒之間排程,CPU會累死,消耗大量的CPU資源

每條執行緒被排程的頻次會降低(執行緒的執行效率降低)

3.多執行緒的優缺點

多執行緒的優點

能適當提高程式的執行效率

能適當提高資源利用率(CPU、記憶體利用率)

多執行緒的缺點

開啟執行緒需要佔用一定的記憶體空間(預設情況下,主執行緒佔用1M,子執行緒佔用512KB)

啟用大量的執行緒,會佔用大量的記憶體空間,降低程式的效能

執行緒越多,CPU在排程執行緒上的開銷就越大

程式設計更加複雜:比如執行緒之間的通訊、多執行緒的資料共享

4.多執行緒在iOS開發中的應用

主執行緒:一個iOS程式執行之後,預設會開啟1條執行緒,稱為”主執行緒“或”UI執行緒“

主執行緒的主要作用

顯示\重新整理UI介面

處理UI事件(比如點選事件、滾動事件、拖拽事件等)

主執行緒的使用注意:別將比較耗時的操作放到主執行緒中

耗時操作會卡住主執行緒,嚴重影響UI的流暢度,給使用者一種卡的不好體驗

相關文章