多執行緒概述
- 多執行緒在iOS開發中是一個比較常見也十分重要的一門技術,首先我們知道每一個程式執行都會開啟一個程式,而一個程式想要執行任務,必須得有執行緒(每個程式至少需要一條執行緒),執行緒是程式最基本的執行單元,一個程式所有的任務都線上程中執行。
- 一個執行緒中的任務是序列的,如果一個執行緒中有多個任務,那麼只能一個一個的按照順序執行這些任務。
- 所謂多執行緒就是一個程式中開啟多條執行緒,每條執行緒可以並行(同時)執行不同的任務,多執行緒可以提高程式的執行效率
多執行緒的原理:
同一時間,CPU只能處理1條執行緒,只有1條執行緒在工作(執行)多執行緒併發(同時)執行,其實是CPU快速地在多條執行緒之間排程(切換)如果CPU排程執行緒的時間足夠快,就造成了多執行緒併發執行的假象。如果執行緒非常非常多,會發生什麼情況?CPU會在N多執行緒之間排程,CPU會累死,消耗大量的CPU資源每條執行緒被排程執行的頻次會降低(執行緒的執行效率降低)
多執行緒優缺點:
優點:
- 能適當的提高程式的執行效率;
- 能適當的提高資源利用率(CPU,記憶體利用率)
缺點:
- 開啟執行緒需要佔用一定的記憶體空間(預設情況下,主執行緒佔用1M,子執行緒佔用512KB),如果開啟大量的執行緒,會佔用大量的記憶體空間,降低程式的效能
- 執行緒越多,CPU在排程執行緒上的開銷就越大
- 程式設計更加複雜:比如執行緒之間的通訊、多執行緒的資料共享
開啟多執行緒方式
- Pthread 基於比較底層的C語言
- NSThread 基於OC語言,物件導向,可直接操作執行緒物件
- GCD 旨在替代NSThread ,充分利用裝置的多核
- NSOperation 基於GCD,比GCD多了一些功能,新增執行緒依賴,取消或暫停執行緒
GCD和NSOperation都是系統自動管理生命週期,功能頁比較強大,會經常使用
相關文章
- 多執行緒-執行緒概述等執行緒
- 多執行緒的概述執行緒
- 多執行緒-程式和執行緒的概述執行緒
- 多執行緒-執行緒組的概述和使用執行緒
- 多執行緒-執行緒池的概述和使用執行緒
- Java多執行緒1:程式與執行緒概述Java執行緒
- Java 多執行緒 - 總結概述Java執行緒
- 【iOS開發】多執行緒 - 概述iOS執行緒
- iOS開發多執行緒篇-概述iOS執行緒
- IOS多執行緒程式設計:概述iOS執行緒程式設計
- 多執行緒-死鎖問題概述和使用執行緒
- 多執行緒-定時器的概述和使用執行緒定時器
- 多執行緒和多執行緒同步執行緒
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒
- Java多執行緒——執行緒Java執行緒
- 執行緒與多執行緒執行緒
- VC多執行緒 C++ 多執行緒執行緒C++
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- 多執行緒-執行緒控制之中斷執行緒執行緒
- Java中多執行緒的概述、實現方式、執行緒控制、生命週期、多執行緒程式練習、安全問題的解決...Java執行緒
- 多執行緒之初識執行緒執行緒
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- 多執行緒系列(1),多執行緒基礎執行緒
- 多執行緒系列(二):多執行緒基礎執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 多執行緒-執行緒控制之守護執行緒執行緒
- a、多執行緒執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- java多執行緒9:執行緒池Java執行緒
- Java多執行緒之執行緒中止Java執行緒
- 多執行緒系列之 執行緒安全執行緒