多线程中基本概念
01 進程進程是指在系統中正在運行的一個應用程序。每個進程之間是獨立的,每個進程均運行在其專用且受保護的內存空間內。
進程 負責非配內存
主線程跟子線程都在棧區中運行:非常可貴 主線程棧區1M 子線程棧區512KB
通過“活動監視器”可以查看Mac系統中所開啟的進程
02 線程
1個進程要想執行任務,必須得有線程(每1個進程至少要有1條線程) 一個進程(程序)的所有任務都在線程中執行
也就是說,在同一時間內,1個線程只能執行1個任務
進程 負責非配內存
主線程跟子線程都在棧區中運行:非常可貴 主線程棧區1M 子線程棧區512KB
通過“活動監視器”可以查看Mac系統中所開啟的進程
02 線程
1個進程要想執行任務,必須得有線程(每1個進程至少要有1條線程) 一個進程(程序)的所有任務都在線程中執行
?
多線程3-1 基本概念即1個進程中可以開啟多條線程,每條線程可以并行(同時)執行不同的任務。3-2 線程的并行并行即同時執行。比如同時開啟3條線程分別下載3個文件(分別是文件A、文件B、文件C。3-3 多線程并發執行的原理在同一時間里,CPU只能處理1條線程,只有1條線程在工作(執行)。多線程并發(同時)執行,其實是CPU快速地在多條線程之間調度(切換),如果CPU調度線程的時間足夠快,就造成了多線程并發執行的假象3-4 多線程優缺點優點1)能適當提高程序的執行效率。2)能適當提高資源利用率(CPU、內存利用率)缺點1)開啟線程需要占用一定的內存空間(默認情況下,主線程占用1M,子線程占用512KB),如果開啟大量的線程,會占用大量的內存空間,降低程序的性能。2)線程越多,CPU在調度線程上的開銷就越大。3)程序設計更加復雜:比如線程之間的通信、多線程的數據共享?
1個線程中任務的執行是串行的,如果要在1個線程中執行多個任務,那么只能一個一個地按順序執行這些任務。也就是說,在同一時間內,1個線程只能執行1個任務
創建線程的目的:就是為了開啟一條新的路徑,運行指定的代碼,于主線程中的代碼實同時運行
注意:多線程技術是為了并行執行多項任務,不是提高單個算法的本身效率
進程和線程的比較
?
1.線程是CPU調用(執行任務)的最小單位。 2.進程是CPU分配資源和調度的單位。 3.一個程序可以對應多個進程,一個進程中可以有多個線程,但至少要有一個線程。 4.同一個進程內的線程共享進程的資源。?
多線程的原理
多線程的原理 同一時間,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的流暢度,給用戶一種“卡”的壞體驗?
iOS中多線程的實現方案轉載于:https://www.cnblogs.com/mshong1616/p/5095737.html
總結
- 上一篇: 摘抄
- 下一篇: 初识linux以及bash的部分使用及技