美文网首页iOS开发进阶之路iOS MultiThreadiOS
多线程之GCD,以及自旋锁OSSpinLock

多线程之GCD,以及自旋锁OSSpinLock

作者: 乡村武装青年 | 来源:发表于2016-01-21 00:09 被阅读4088次

今天在是用reactivecocoa这个类库的时候,发现里面大量的是用自旋锁.由于之前没有接触过,就顺道查询了一下.然后对它有了一个大致的认识.主要是防止出现竞争资源这种情况,和@synchronized类似(在不考虑性能的情况下直接是用synchronized就可以).性能对比如下:

可以看出OSSpinLock处理效率比synchronized要快很多.如果是频繁操作,推荐使用.

之后有温习一遍GCD的相关知识,模拟在并发队列里面同时对一个资源赋值,加锁和不加锁的区别:

不加锁 加锁之后

通过对比可以发现,不加锁的时候,任务结束时间是随即乱序的,但是加锁之后是升序的.

当然在异步执行的队列里面,也可以是用dispatch_barrier_async 确保之前的异步队列执行完成之后在执行后面的block的内容.也可以用它防止资源竞争.

相关文章

  • 多线程之GCD,以及自旋锁OSSpinLock

    今天在是用reactivecocoa这个类库的时候,发现里面大量的是用自旋锁.由于之前没有接触过,就顺道查询了一下...

  • 线程锁

    自旋锁 一、OSSpinLock OSSpinLock叫做”自旋锁”,等待锁的线程会处于忙等(busy-wait)...

  • iOS 的自旋锁与互斥锁

    自旋锁有:atomic, OSSpinLock, dispatch_semaphore_t.是一种用于保护多线程共...

  • iOS各种锁总结

    OSSpinLock OSSpinLock自旋锁,因为自旋锁一直busy-waiting忙等待占用cpu,且不会像...

  • iOS 不安全的OSSpinLock锁

    iOS 不安全的OSSpinLock锁 OSSpinLock OSSpinLock 是自旋锁,等待锁的线程会处于忙...

  • 多线程复习

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

  • iOS 开发中加锁

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

  • OSSpinLock自旋锁

    自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是...

  • iOS 开发过程中8种锁

    OSSpinLock OSSpinLock 自旋锁,不会让等待的线程进入睡眠状态,效率高。OSSpinLock 不...

  • 6-4 锁与多线程

    锁的原因 @synchronized. 自旋锁。OSSpinLock NSLock 普通锁 NSRecursi...

网友评论

  • Auditore:保持时间上的升序 那怎样才能按1234来执行
    Jackson同学:@乡村武装青年 信号量仅仅控制是你队列的并发量并不能去控制你队列中线程的执行顺序,如果线程中执行的过于简单,线程在队列中总是按照插入的顺序来被执行的导致看上去的顺序可能会产生一种假象,像是可以控制顺讯一样,但是这种控制只能是控制插入顺序就是开始顺序,不能控制结束顺序,线程中的操作复杂度决定了你什么时候执行完毕,所以结论就是还是没有办法控制
    乡村武装青年:用信号量控制是一种方法
  • a637237315f9:多谢分享

本文标题:多线程之GCD,以及自旋锁OSSpinLock

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