自旋锁

作者: kindol | 来源:发表于2018-08-02 23:24 被阅读0次

竞争资源时,总有进程获得对象,而对于没获得资源的进程的处理就有各种不同的解决方法了,我们可以使没获得锁的进程

  • 一直循环在那里看是否该自旋锁的保持者已经释放了锁,这就是自旋锁,它不用将进程阻塞
  • 也可以使进程阻塞自己,请求OS调度另一个线程上处理器,这就是互斥锁

自旋锁原理

跟互斥锁一样,一个执行单元要想访问被自旋锁保护的共享资源,必须先得到锁,在访问完共享资源后,必须释放锁。如果在获取自旋锁时,没有任何执行单元保持该锁,那么将立即得到锁;如果在获取自旋锁时锁已经有保持者,那么获取锁操作将自旋在那里,直到该自旋锁的保持者释放了锁。

这样可能导致会占用过多的CPU资源,如果不加限制,单cpu的时候自旋锁会让其它process动不了

自旋锁比较适用于锁使用者保持锁时间比较短的情况。正是由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。

应用

CAS(LOCK前缀指令)、原子包

相关文章

  • iOS 开发中加锁

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

  • 关于自旋锁

    自旋锁是什么? spinlock,不断的自旋(自我循环)尝试获得锁。参考文档:Java中的自旋锁 自旋锁的实现 自...

  • 自旋锁与互斥锁

    自旋锁(Spin lock) 自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保...

  • 线程同步

    一、临界资源 加锁会导致运行时间的增长 二、互斥锁 三、自旋锁 实验发现【自旋锁】的效率较高自旋锁 自旋锁加入休眠...

  • CLH并发队列

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

  • 自旋锁

    1. 什么是自旋锁 自旋锁与互斥锁有点类似,但是自旋锁不会引起调用者阻塞,如果自旋锁已经被别的执行单元保持,调用者...

  • iOS中各种锁的性能对比

    自旋锁 与 互斥锁 自旋锁 (spin lock): 如果一个线程需要获取自旋锁,该锁已经被其他线程占用,该线程不...

  • 多线程复习

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

  • iOS开发中的锁

    锁的分类 根据资源申请者的表现形式,锁分为:自旋锁 和 互斥锁 自旋锁: 不引起调用者的休眠,如果自旋锁已经被别的...

  • Spinlock:什么是自旋锁

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

网友评论

      本文标题:自旋锁

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