技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 查看专题: 自旋锁
    前言 多线程程序中,锁的使用往往成为系统性能的关键。在做地址可视化项目的时候,由于内存管理部分需要频繁的更新内存的引用计数,所以产生了使用自旋锁的想法,这篇文章我们从自旋锁的性能开始说起,由浅入深的给出了一种改进的自旋锁的实现。 这里我们 1) 讨论自旋锁对并发程序性能的影响; 2) glic中自旋锁的缺陷; 3) 随后提出了一种改进的(用户空间)自旋锁的实现,供大家在今后的程序设计中参考、使用。欢迎给出改进的自旋锁中的不足和意见。 关于锁 总体上来看,锁分为两种:休眠式锁和自旋锁。休眠式锁的原理是当当前线程不能获取到指定的锁时,它就让出CPU,加入到一个等待队列中,直到被唤醒,它才会被重新调度执行。自旋锁的原理是若当前线程不能获取到指定的锁,它不会主动让出CPU,而是会在一个紧凑循环中重复的检测锁是否已经可用,即忙等待(busy wait)。 休眠锁与自旋锁的对比 如果对临界资源的访问时
    spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任何时刻时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当(如临界区执...
[ 共2篇文章 ][ 第1页/共1页 ][ 1 ]
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1