原子属性
@synchronized是加互斥锁
atomic实际上系统会在setter方法中加锁---自旋锁(为什么getter方法中不加锁)
自旋锁的效率要比互斥锁高.
UIkit不是线程安全(怎么保证控件显示的数据是正确的?)
@interfaceViewController()
@property(nonatomic,strong)NSObject*obj1;
//atomic加了这个关键字,系统会自动在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;
//演示系统的自旋锁的执行效率
//CACurrentMediaTime()一般是用来做性能测试时,取时间用的(取到的是当前CPU的时间)
//NSDate互联网同步的时间,一般和网络做交互,或者显示给用户
CFTimeIntervalstart =CACurrentMediaTime();
for(inti=0; i
self.obj1= [[NSObjectalloc]init];
}
NSLog(@"互斥锁执行的时间%f",CACurrentMediaTime()-start);
//演示互斥锁的执行时间
start =CACurrentMediaTime();
for(inti=0; i
self.obj2= [[NSObjectalloc]init];
}
NSLog(@"自旋锁执行的时间%f",CACurrentMediaTime()-start);
}