您的当前位置:首页自旋锁及互斥锁的概念

自旋锁及互斥锁的概念

2024-12-13 来源:哗拓教育

原子属性

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

}

显示全文