互斥鎖使用格式安全
@synchronized(鎖對象) { // 須要鎖定的代碼 } 注意:鎖定1份代碼只用1把鎖,用多把鎖是無效的
互斥鎖的優缺點服務器
優勢: 能有效防止因多線程搶奪資源形成的數據安全問題多線程
缺點:須要消耗大量的CPU資源atom
互斥鎖的使用前提:多條線程搶奪同一塊資源spa
相關專業術語:線程同步線程
線程同步的意思是:多條線程按順序地執行任務code
互斥鎖,就是使用了線程同步技術對象
OC在定義屬性時有nonatomic和atomic兩種選擇內存
atomic:原子屬性,爲setter方法加鎖(默認就是atomic)資源
nonatomic:非原子屬性,不會爲setter方法加鎖
atomic加鎖原理
@property (assign, atomic) int age; - (void)setAge:(int)age { @synchronized(self) { _age = age; } }
nonatomic和atomic對比
atomic:線程安全,須要消耗大量的資源
nonatomic:非線程安全,適合內存小的移動設備
iOS開發的建議
全部屬性都聲明爲nonatomic
儘可能避免多線程搶奪同一塊資源
儘可能將加鎖、資源搶奪的業務邏輯交給服務器端處理,減少移動客戶端的壓力