比如同時開啟迅雷、xcode,系統就會分別啟動2個程序
什麼是多執行緒:
多執行緒的原理:
如果執行緒非常非常多,會發生什麼情況?
多執行緒的優缺點:
缺點 什麼是主線程:
主線程的主要作用:
主線程的使用注意:
錯誤做法:
正確做法:- (void)downloadimage
資源共享
- 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源
- 比如多個執行緒訪問同乙個物件、同乙個變數、同乙個檔案
- 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題
如下圖:

安全隱患分析
安全隱患解決 – 互斥鎖
互斥鎖的優缺點
互斥鎖的使用前提
互斥鎖,就是使用了執行緒同步技術
oc在定義屬性時有nonatomic和atomic兩種選擇
nonatomic和atomic對比- atomic:原子屬性,為setter方法加鎖(預設就是atomic)
- nonatomic:非原子屬性,不會為setter方法加鎖
- ios開發的建議- atomic:執行緒安全,需要消耗大量的資源
- nonatomic:非執行緒安全,適合記憶體小的移動裝置
- 所有屬性都宣告為nonatomic
- 盡量避免多執行緒搶奪同一塊資源
- 盡量將加鎖、資源搶奪的業務邏輯交給伺服器端處理,減小移動客戶端的壓力
什麼叫做執行緒間通訊
- 在1個程序中,執行緒往往不是孤立存在的,多個執行緒之間需要經常進行通訊
執行緒間通訊的體現執行緒間通訊常用方法- 1個執行緒傳遞資料給另1個執行緒
- 在1個執行緒中執行完特定任務後,轉到另1個執行緒繼續執行任務
執行緒間通訊方式 – 利用nsport- (void)performselectoronmainthread:(sel)aselector withobject:(id)arg waituntildone:(bool)wait;
- (void)performselector:(sel)aselector onthread:(nsthread *)thr withobject:(id)arg waituntildone:(bool)wait;
iOS開發 多執行緒簡介
多執行緒從概念上理解是指從軟體或者硬體上實現多個執行緒併發執行的技術,簡單點理解就是同一時間可以執行多個事情 比如說一邊聽歌一邊碼 聽歌是乙個執行緒,碼 是乙個執行緒,如果是單核cpu的話,上面兩個動作其實可以確切的理解為併發,也就是偽並行,只是兩者相差的時間太快沒有察覺。電腦現在一般都是雙核的或者...
iOS開發 多執行緒簡介
多執行緒從概念上理解是指從軟體或者硬體上實現多個執行緒併發執行的技術,簡單點理解就是同一時間可以執行多個事情 比如說一邊聽歌一邊碼 聽歌是乙個執行緒,碼 是乙個執行緒,如果是單核cpu的話,上面兩個動作其實可以確切的理解為併發,也就是偽並行,只是兩者相差的時間太快沒有察覺。電腦現在一般都是雙核的或者...
iOS開發 多執行緒簡介
多執行緒從概念上理解是指從軟體或者硬體上實現多個執行緒併發執行的技術,簡單點理解就是同一時間可以執行多個事情 比如說一邊聽歌一邊碼 聽歌是乙個執行緒,碼 是乙個執行緒,如果是單核cpu的話,上面兩個動作其實可以確切的理解為併發,也就是偽並行,只是兩者相差的時間太快沒有察覺。電腦現在一般都是雙核的或者...