多線程安全----同步鎖(互斥鎖)
阿新 • • 發佈:2019-02-16
問題 ack zed bre gin back bsp -- font
多條線程搶奪同一資源時,經常需要加鎖,保證同一時間只能有一條線程操作一個資源。
同步鎖就是互斥鎖
格式:@synchronized (token) { }
token:鎖對象,要使用全局的對象,建議使用self
{} 要加鎖的代碼段
註意點:加多把鎖是無效的。 要註意加鎖的位置。
互斥鎖的優點: 能有效防止多線程因搶奪資源造成的數據安全問題
互斥鎖的缺點:需要消耗大量的cpu資源
互斥鎖使用的前提:多條線程搶奪同一塊資源
相關術語:線程同步
線程同步就是多條線程在同一條線上執行(按順序的執行任務)
互斥鎖就是使用了線程同步技術。
@synchronized (self) {
NSInteger count = self.totalCount;
if (count > 0) {
self.totalCount--;
for (int i = 0; i<1000000; i++) {
}
NSLog(@"票還有%ld張",self.totalCount);
}else{
NSLog(@"票賣完了。。。。");
break;
}
}
多線程安全----同步鎖(互斥鎖)