您现在的位置:首页 --> 查看专题: 自旋锁
前言 多线程程序中,锁的使用往往成为系统性能的关键。在做地址可视化项目的时候,由于内存管理部分需要频繁的更新内存的引用计数,所以产生了使用自旋锁的想法,这篇文章我们从自旋锁的性能开始说起,由浅入深的给出了一种改进的自旋锁的实现。 这里我们 1) 讨论自旋锁对并发程序性能的影响; 2) glic中自旋锁的缺陷; 3) 随后提出了一种改进的(用户空间)自旋锁的实现,供大家在今后的程序设计中参考、使用。欢迎给出改进的自旋锁中的不足和意见。 关于锁 总体上来看,锁分为两种:休眠式锁和自旋锁。休眠式锁的原理是当当前线程不能获取到指定的锁时,它就让出CPU,加入到一个等待队列中,直到被唤醒,它才会被重新调度执行。自旋锁的原理是若当前线程不能获取到指定的锁,它不会主动让出CPU,而是会在一个紧凑循环中重复的检测锁是否已经可用,即忙等待(busy wait)。 休眠锁与自旋锁的对比 如果对临界资源的访问时
spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任何时刻时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当(如临界区执...
[ 共2篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
-
[321] WordPress插件开发 -- 在插件使用 -
[151] 解决 nginx 反向代理网页首尾出现神秘字 -
[91] IOS安全–浅谈关于IOS加固的几种方法 -
[50] 到底什么是MVC? -
[50] Linux Used内存到底哪里去了? -
[50] 二维码的生成细节和原理 -
[48] Shell的那些事儿 -
[47] Hacker News 排名算法工作原理 -
[47] 中间件和稳定性平台 -
[46] 浏览器的工作原理:新式网络浏览器幕后揭秘
赞助商广告



