IOS開發多線程 - 多線程的簡單介紹

一.同步和異步

同步和異步是任務執行的兩種方式

1.什麼是同步

    我們之前寫程序的時候都是從上到下,代碼順序執行的
    1個人執行多個任務,也是要依次執行,因爲1個人同一時間只能執行1個任務
    多個任務按序依次執行,就是同步執行

    1)同步的概念:必須等待當前語句執行完畢,纔可以執行下一個語句

這裏寫圖片描述
2.什麼是異步

    多個人同時執行多個任務

這裏寫圖片描述

二.進程和線程
1.什麼是進程

進程是指在系統中正在運行的一個應用程序
每個進程之間是獨立的,每個進程均運行在其專用的且受保護的內存空間內

這裏寫圖片描述

比如同時運行QQ 和 Xcode,系統會分別啓動兩個進程
通過“活動監視器”可以查看Mac系統中所開啓的進程

2.什麼是線程

1個進程可以有多個線程組成(1個進程至少要有1個線程)
線程是進程的基本執行單元,一個進程的所有任務都在線程中執行

這裏寫圖片描述

    比如聽音樂,發送QQ消息,接收QQ消息都要在線程中執行

三.多線程

1.什麼是多線程

多線程 : 1個進程中可以開啓多個線程,多個線程可以“同時”執行不同的任務
進程-公司,線程-員工,老闆是什麼?
多線程可以解決程序阻塞的問題
多線程可以提高程序的執行效率

2.多線程的執行原理
這裏寫圖片描述
a. (單核CPU)同一時間,cpu只能處理1個線程,只有1個線程在執行任務
b. 多線程同時執行:是CPU快速的在多個線程之間的切換
c. cpu調度線程的時間足夠快,就造成了多線程的”同時”執行的假象
d. 如果線程數非常多,cpu會在n個線程之間切換,消耗大量的cpu資源
i. 每個線程被調度的次數會降低,線程的執行效率降低

3.多線程的優缺點

多線程的優點
    能適當提高程序的執行效率
    能適當提高資源的利用率(cpu,內存)
    線程上的任務執行完成後,線程會自動銷燬
多線程缺點
    開啓線程需要佔用一定的內存空間(默認情況下,每一個線程都佔512KB)
    如果開啓大量的線程,會佔用大量的內存空間,降低程序的性能
    線程越多,cpu在調用線程上的開銷就越大
    程序設計更加複雜,比如多線程的數據共享、線程間的通信

4.主線程

    一個程序運行後,默認會開啓1個線程,稱爲“主線程”或“UI線程”
    主線程一般用來  刷新UI界面 ,處理UI事件(比如:點擊、滾動、拖拽等事件)
    主線程使用注意
    注意:**別將耗時的操作放到主線程中**
    耗時操作會卡住主線程,嚴重影響UI的流暢度,給用戶一種卡的壞體驗

5.總結

實際上,使用多線程,由於會開線程,必然就會消耗性能,但是卻可以提高用戶體驗。所以,綜合考慮,在保證良好的用戶體驗的前提下,可以適當地開線程,一般開3-6條。

這裏寫圖片描述

但是需要注意的是:實際上,無論是主線程還是子線程,默認的堆棧大小都是512KB。
官方文檔沒有及時更新。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章