自旋锁及互斥锁的概念

作者: 不会打滚儿的狮子 | 来源:发表于2016-07-07 13:18 被阅读122次

原子属性

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

}

相关文章

  • 自旋锁及互斥锁的概念

    原子属性 @synchronized是加互斥锁atomic实际上系统会在setter方法中加锁---自旋锁(为什么...

  • 线程锁

    1.常见的锁包括:互斥锁,自旋锁。 2.互斥锁是指锁的类型,自旋锁是指锁的实现方式。 3.互斥锁:当上...

  • iOS底层探索-多线程锁

    多线程的锁大致可分为两大类:互斥锁、自旋锁;也可以分为三类:互斥锁、自旋锁、读写锁。 一、互斥锁:互斥+同步(强调...

  • iOS 锁

    同步锁 自旋锁 互斥锁

  • CLH并发队列

    1 什么是自旋锁和互斥锁? 由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么? 自旋锁说白了也是一种互斥锁,...

  • iOS面试题与核心基础之线程同步(锁,串行队列,信号量,@syn

    锁 iOS多线程锁有两类 自旋锁 和 互斥锁自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。资源已...

  • Spinlock:什么是自旋锁

    在进一步了解自旋锁之前,先来理解下自旋锁的概念。什么是自旋锁?自旋锁有那些用途?和另一种互斥锁又是什么怎么回事儿?...

  • iOS 多线程面试题(自旋锁与互斥锁)

    自旋锁与互斥锁 自旋锁: 是一种用于保护多线程共享资源的锁,与一般互斥锁(mutex)不同之处在于当自旋锁尝试获取...

  • 多线程复习

    自旋锁 & 互斥锁 自旋锁:atomic、OSSpinLock、dispatch_semaphore_t临界区加锁...

  • iOS 开发中加锁

    [1].OSSpinLock 自旋锁 [1]自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被...

网友评论

    本文标题:自旋锁及互斥锁的概念

    本文链接:https://www.haomeiwen.com/subject/sslljttx.html