原子屬性
@synchronized是加互斥鎖
atomic實際上系統(tǒng)會在setter方法中加鎖---自旋鎖(為什么getter方法中不加鎖)
自旋鎖的效率要比互斥鎖高.
UIkit不是線程安全(怎么保證控件顯示的數(shù)據(jù)是正確的?)
@interfaceViewController()
@property(nonatomic,strong)NSObject*obj1;
//atomic加了這個關鍵字,系統(tǒng)會自動在setter方法中給我們加鎖-自旋鎖
@property(atomic,strong)NSObject*obj2;
@end
- (void)setObj1:(NSObject*)obj1{
@synchronized(self) {
_obj1= obj1;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{
intmax =1000*10000;
//演示系統(tǒng)的自旋鎖的執(zhí)行效率
//CACurrentMediaTime()一般是用來做性能測試時,取時間用的(取到的是當前CPU的時間)
//NSDate互聯(lián)網(wǎng)同步的時間,一般和網(wǎng)絡做交互,或者顯示給用戶
CFTimeIntervalstart =CACurrentMediaTime();
for(inti=0; i
self.obj1= [[NSObjectalloc]init];
}
NSLog(@"互斥鎖執(zhí)行的時間%f",CACurrentMediaTime()-start);
//演示互斥鎖的執(zhí)行時間
start =CACurrentMediaTime();
for(inti=0; i
self.obj2= [[NSObjectalloc]init];
}
NSLog(@"自旋鎖執(zhí)行的時間%f",CACurrentMediaTime()-start);
}