執行緒和程式基礎以及多執行緒的基本使用(iOS)

zhangxz &發表於2019-03-01

什麼是程式?

程式是指在系統中正在執行的一個應用程式
每個程式之間是相互獨立的,每個程式都執行在其專用且受保護的記憶體空間
複製程式碼

什麼是執行緒?

一個程式想要執行任務,必須得有執行緒(每個程式至少有一個執行緒)
一個程式(程式)的所有Task都線上程中執行
複製程式碼

執行緒中的序列

一個執行緒中的任務的執行是序列的
如果要在一個執行緒中執行多個任務,那麼只能一個個的按順序執行這些任務
也就是說,在同一時間內,一個執行緒只能執行一個任務
複製程式碼

程式和執行緒的比較

執行緒是CPU呼叫(執行任務)的最小單位
程式是CPU分配資源和排程的單位
一個程式可以對應多個程式,一個程式可以有多個執行緒,但至少有一個執行緒
同一個程式內的執行緒共享程式的資源
打個比方,車間是程式,那麼車間內的工人就是執行緒
複製程式碼

多執行緒

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

多執行緒的原理

同一時間,CPU只能處理一條執行緒,只有一條執行緒在執行Task
多執行緒併發(同時)執行,其實就是CPU快速的在多條執行緒之間排程(切換)
CPU排程執行緒的時間足夠快,就會造成了多執行緒併發執行的假象
如果執行緒非常多,會造成CPU在N條執行緒之間排程,CPU會累死,消耗大量的CPU資源,會降低執行緒執行效率
複製程式碼

多執行緒的優點

提高執行的執行效率
能適當的提高資源利用率(CPU,記憶體利用率)
CPU一次只能處理一條執行緒,比如說,處理一條執行緒時利用率是20%,那麼多執行緒就會將CPU的利用率完全用到。
複製程式碼

多執行緒的缺點

建立執行緒時需要開銷(空間)。iOS主要成本:建立執行緒大概要90毫秒,棧空間(子執行緒512kb,主執行緒1MB),核心資料結構(1kb左右)
如果大量開啟執行緒,會降低程式效能
執行緒越多,CPU在排程執行緒上的開銷就越大(程式卡頓,執行不流暢)
使程式設計更加複雜:比如執行緒之間的通訊。多執行緒之間的資料共享。
複製程式碼
主執行緒做UI處理 子執行緒做耗時操作

概念圖

執行緒和程式基礎以及多執行緒的基本使用(iOS)
執行緒和程式基礎以及多執行緒的基本使用(iOS)
執行緒和程式基礎以及多執行緒的基本使用(iOS)
執行緒和程式基礎以及多執行緒的基本使用(iOS)

相關文章