一、程序和執行緒
1、什麼是程序
程序是指在系統中正在執行的乙個應用程式
每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內
比如同時開啟迅雷、xcode,系統就會分別啟動2個程序
通過「活動監視器」可以檢視mac系統中所開啟的程序
3、執行緒的序列
1個執行緒中任務的執行是序列的
如果要在1個執行緒中執行多個任務,那麼只能乙個乙個地按順序執行這些任務
也就是說,在同一時間內,1個執行緒只能執行1個任務
因此,也可以認為執行緒是程序中的1條執行路徑
二、多執行緒
1、什麼是多執行緒
1個程序中可以開啟多條執行緒,多條執行緒可以並行(同時)執行不同的任務
多執行緒技術可以提高程式的執行效率
2、多執行緒的原理
同一時間,cpu只能處理1條執行緒,只有1條執行緒在工作(執行)
多執行緒併發(同時)執行,其實是cpu快速地在多條執行緒之間排程(切換)
如果cpu排程執行緒的時間足夠快,就造成了多執行緒併發執行的假象
思考:如果執行緒非常非常多,會發生什麼情況?
cpu會在n多執行緒之間排程,cpu會累死,消耗大量的cpu資源
每條執行緒被排程執行的頻次會降低(執行緒的執行效率降低)
3、多執行緒的優缺點
多執行緒的優點
能適當提高程式的執行效率
能適當提高資源利用率(cpu、記憶體利用率)
多執行緒的缺點
建立執行緒是有開銷的,ios下主要成本包括:核心資料結構(大約1kb)、棧空間(子執行緒512kb、主線程1mb,也可以使用-setstacksize:設定,但必須是4k的倍數,而且最小是16k),建立執行緒大約需要90毫秒的建立時間
如果開啟大量的執行緒,會降低程式的效能
執行緒越多,cpu在排程執行緒上的開銷就越大
程式設計更加複雜:比如執行緒之間的通訊、多執行緒的資料共享
三、應用
1、多執行緒在ios開發中的應用
>什麼是主線程
乙個ios程式執行後,缺省會開啟1條執行緒,稱為「主線程」或「ui執行緒」
2、耗時操作
耗時操作都放在子執行緒(後台執行緒、非主線程)
四、ios中多執行緒的實現方案
iOS開發多執行緒篇 多執行緒簡單介紹
ios開發多執行緒篇 多執行緒簡單介紹 一 程序和執行緒 1.什麼是程序 程序是指在系統中正在執行的乙個應用程式 每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內 比如同時開啟qq xcode,系統就會分別啟動2個程序 通過 活動監視器 可以檢視mac系統中所開啟的程序 2.什麼是...
iOS開發多執行緒篇 執行緒安全
一 多執行緒的安全隱患 資源共享 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題 示例一 示例二 問題 1 2 05 執行緒安全4 5 6 7 89 10 im...
iOS開發多執行緒篇 執行緒安全
ios開發多執行緒篇 執行緒安全 一 多執行緒的安全隱患 資源共享 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題 示例一 示例二 問題 1 2 05 執行緒安...