1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源
比如多個執行緒訪問同乙個物件、同乙個變數、同乙個檔案
蘋果不建議使用互斥鎖,因為太消耗效能
(1) 互斥鎖使用格式
@synchronized(鎖物件)
注意:鎖定1份**只用1把鎖,用多把鎖是無效的
(2) 互斥鎖的優缺點
優點: 能有效防止因多執行緒搶奪資源造成的資料安全問題
缺點: 需要消耗大量的cpu資源
(3) 互斥鎖的使用前提: 多條執行緒搶奪同一塊資源
(4) 相關專業術語: 執行緒同步
執行緒同步的意思是: 多條執行緒按順序地執行任務
互斥鎖,就是使用了執行緒同步技術
//互斥鎖,要在搶奪的共享資源讀寫範圍上加鎖
//增加互斥鎖之後,併發的整體效能「會下降」
//互斥鎖對效能影響是相當嚴重的,代價是高昂的!
//在使用互斥鎖的時候,一定注意,儘量減少鎖定的**範圍
@synchronized(self) {
原子屬性 atomic 是蘋果的乙個多執行緒技術, 任何時候, 只允許乙個執行緒對該屬性進行寫入操作, 可以允許多個執行緒讀取屬性數值!
在定義屬性時, 預設都是 atomic 屬性
原子屬性的效能, 比互斥鎖高, 但是仍然代價很高! 不建議使用!
oc在定義屬性時有nonatomic和atomic兩種選擇
atomic:原子屬性,為setter方法加鎖(預設就是atomic)
nonatomic:非原子屬性,不會為setter方法加鎖
(1) nonatomic和atomic對比
atomic:執行緒安全,需要消耗大量的資源
nonatomic:非執行緒安全,適合記憶體小的移動裝置
(2) ios開發的建議
所有屬性都宣告為nonatomic
盡量避免多執行緒搶奪同一塊資源
盡量將加鎖、資源搶奪的業務邏輯交給伺服器端處理,減小移動客戶端的壓力
iOS開發多執行緒 執行緒安全
資源共享 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題 示例一 示例二 問題 import viewcontroller.h inte ce viewcont...
多執行緒02
什麼是使用者態和核心態 在作業系統裡面,作業系統的核心佔一部分記憶體,使用者應用程式佔一部分記憶體,核心即可以訪問自身的記憶體,也可以訪問使用者應用程式的記憶體,但是使用者應用程式只能訪問自身的記憶體,不能訪問核心的記憶體 執行緒的啟動 關閉 切換都要依賴於核心態 voliate 保證執行緒可見性 ...
(多執行緒)多執行緒的併發安全
多執行緒併發操作同乙個資源 同步鎖 多執行緒操作的鎖必須唯一 必須搞清楚 哪些 需要同步?那些在操作共享資源的 只要包含非讀的操作,或者根據共享資源進行條件判斷的,就需要同步!同步 塊解決 package com.gc.thread 多執行緒操作共享資源 併發 執行緒安全問題 同步 鎖 相對而言效能...