1、進程 什麼是進程 進程是指在系統中正在運行的一個應用程式 每個進程之間是獨立的,每個進程均運行在其專用且受保護的記憶體空間內 比如同時打開迅雷、Xcode,系統就會分別啟動2個進程 2、線程 什麼是線程 1個進程要想執行任務,必須得有線程(每1個進程至少要有1條線程) 一個進程(程式)的所有任務都 ...
1、進程
- 什麼是進程
- 進程是指在系統中正在運行的一個應用程式
- 每個進程之間是獨立的,每個進程均運行在其專用且受保護的記憶體空間內
- 比如同時打開迅雷、Xcode,系統就會分別啟動2個進程
2、線程
- 什麼是線程
- 1個進程要想執行任務,必須得有線程(每1個進程至少要有1條線程)
- 一個進程(程式)的所有任務都線上程中執行
- 比如使用酷狗播放音樂、使用迅雷下載電影,都需要線上程中執行
3、線程的串列
- 1個線程中任務的執行是串列的
- 如果要在1個線程中執行多個任務,那麼只能一個一個地按順序執行這些任務
- 也就是說,在同一時間內,1個線程只能執行1個任務
- 比如在1個線程中下載3個文件(分別是文件A、文件B、文件C)
- 因此,也可以認為線程是進程中的1條執行路徑
4、多線程
- 什麼是多線程
- 1個進程中可以開啟多條線程,每條線程可以並行(同時)執行不同的任務
- 如果說進程是 車間n,線程就是 車間工人
- 多線程技術可以提高程式的執行效率
- 比如同時開啟3條線程分別下載3個文件(分別是文件A、文件B、文件C)
5、多線程的優缺點
- 多線程的優點
- 能適當提高程式的執行效率
- 能適當提高資源利用率(CPU、記憶體利用率)
- 多線程的缺點
- 創建線程是有開銷的,iOS下主要成本包括:內核數據結構(大約1KB)、棧空間(子線程512KB、主線程1MB,也可以使用-setStackSize:設置,但必須是4K的倍數,而且最小是16K),創建線程大約需要90毫秒的創建時間
- 如果開啟大量的線程,會降低程式的性能
- 線程越多,CPU在調度線程上的開銷就越大
- 程式設計更加複雜:比如線程之間的通信、多線程的數據共用
6、iOS中多線程的實現方案