iOS多線程之互斥鎖

1.安全隱患解決-互斥鎖

  • 互斥鎖使用格式安全

@synchronized(鎖對象) { // 須要鎖定的代碼  }
注意:鎖定1份代碼只用1把鎖,用多把鎖是無效的
  • 互斥鎖的優缺點服務器

        優勢: 能有效防止因多線程搶奪資源形成的數據安全問題多線程

        缺點:須要消耗大量的CPU資源atom

  •  互斥鎖的使用前提:多條線程搶奪同一塊資源spa

  •  相關專業術語:線程同步線程

        線程同步的意思是:多條線程按順序地執行任務code

        互斥鎖,就是使用了線程同步技術對象

2.原子性和非原子性

  •  OC在定義屬性時有nonatomic和atomic兩種選擇內存

     atomic:原子屬性,爲setter方法加鎖(默認就是atomic)資源

     nonatomic:非原子屬性,不會爲setter方法加鎖

  •  atomic加鎖原理

@property (assign, atomic) int age;
- (void)setAge:(int)age
{
    @synchronized(self) {
        _age = age;
    }
}

3.原子性與非原子性的選擇

  •  nonatomic和atomic對比

     atomic:線程安全,須要消耗大量的資源

     nonatomic:非線程安全,適合內存小的移動設備

  •  iOS開發的建議

    全部屬性都聲明爲nonatomic

    儘可能避免多線程搶奪同一塊資源 

    儘可能將加鎖、資源搶奪的業務邏輯交給服務器端處理,減少移動客戶端的壓力

相關文章
相關標籤/搜索