自旋锁和互斥锁类似,区别在于线程在未获得锁时不去睡眠而是原地等待,直到锁被释放。
自旋锁适合用在耗时较少的逻辑中对共享数据的保护,即线程持有自旋锁的时间很短。
等待的线程发现自旋锁被其他线程持有时,不必挂起自己,稍微等一会儿就好,避免线程状态切换带来的开销。如果不用自旋锁,逻辑耗时很少而线程频繁地睡眠/唤醒,加重线程调度程序的负担。
缺点是:
1、等待自旋锁的线程一直占有CPU, 如果较长时间内不能及时释放自旋锁,会浪费CPU资源。
2、 自旋锁有可能产生死锁。
总之,自旋锁适合于内核可抢占式情况,对于单核非抢占式情形,由于不可抢占,自旋锁的操作是空操作。
MySQL自旋锁
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 理解锁的基础知识 如果想要透彻的理解java锁的来龙去脉,需要先了解以下基础知识。 基础知识之一:锁的类型 公平锁...
- 之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行...
- 【转载】:https://blog.csdn.net/zqz_zqz/article/details/702337...
- 【转自】http://blog.csdn.net/zqz_zqz/article/details/70233767...