幫助小白快速理解多線程

進程

什麼是進程

進程是指在系統中正在運行的一個應用程序
每個進程之間是獨立的,每個進程均運行在其專
用且受保護的內存空間內
比如同時打開迅雷、Xcode,系統就會分別啓動2個進程
通過“活動監視器”可以查看Mac系統中所開啓的進程

線程
什麼是線程
1個進程要想執行任務,必須得有線程(每1個進程至少要有1條線程)
一個進程(程序)的所有任務都在線程中執行
l比如使用酷狗播放音樂、使用迅雷下載電影,都需要在線程中執行

線程的串行
1個線程中任務的執行是串行的
如果要在1個線程中執行多個任務,那麼只能一個一個地按順序執行這些任務
也就是說,在同一時間內,1個線程只能執行1個任務
比如在1個線程中下載3個文件(分別是文件A、文件B、文件C)

進程和線程的比較

1.線程是CPU調用(執行任務)的最小單位。

2.進程是CPU分配資源和調度的單位。

3.一個程序可以對應多個進程,一個進程中可以有多個線程,但至少要有一個線程。

4.同一個進程內的線程共享進程的資源。


多線程

什麼是多線程
1個進程中可以開啓多條線程,每條線程可以並行(同時)執行不同的任務
進程à車間,線程à車間工人
多線程技術可以提高程序的執行效率
比如同時開啓3條線程分別下載3個文件(分別是文件A、文件B、文件C

多線程的原理
多線程的原理
同一時間,CPU只能處理1條線程,只有1條線程在工作執行)
多線程併發(同時)執行,其實是CPU快速地在多條線程之間調度(切換)
如果CPU調度線程的時間足夠快,就造成了多線程併發執行的假象
思考:如果線程非常非常多,會發生什麼情況?
  CPU會在N多線程之間調度,CPU會累死,消耗大量的CPU資源
  每條線程被調度執行的頻次會降低(線程的執行效率降低)

多線程的優缺點

多線程的優點
能適當提高程序的執行效率
能適當提高資源利用率(CPU、內存利用率)

多線程的缺點
創建線程是有開銷的,iOS下主要成本包括:內核數據結構(大約1KB)、棧空間(子線程512KB、主線程1MB,也可以使用-setStackSize:設置,但必須是4K的倍數,而且最小是16K),創建線程大約需要90毫秒的創建時間
如果開啓大量的線程會降低程序的性能
線程越多,CPU在調度線程上的開銷就越大
程序設計更加複雜:比如線程之間的通信、多線程的數據共享

多線程iOS開發中的應用
什麼是主線程
一個iOS程序運行後,默認會開啓1條線程稱爲“主線程”或“UI線程

主線程的主要作用
顯示\刷新UI界面
處理UI事件(比如點擊事件、滾動事件、拖拽事件等)

主線程的使用注意
別將比較耗時的操作放到主線程中
耗時操作會卡住主線程,嚴重影響UI的流暢度,給用戶一種“卡”的壞體驗













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