自旋锁及互斥锁的概念

原子属性

@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);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容