《Linux性能优化实战》学习笔记 Day04

文章讨论了在不同业务场景下如何选择合适的锁机制。互斥锁适用于执行时间未知的代码,而自旋锁适合短时间的锁定,尤其在多核CPU环境下。读写锁则在读多写少的场景下能提高效率。此外,文章提到了乐观锁在冲突概率低时的适用性,以及协程自旋锁在Go语言中的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

06 | 锁:如何根据业务场景选择合适的锁?

原文摘抄

当你无法判断锁住的代码会执行多久时,应该首选互斥锁,互斥锁是一种独占锁。

如果你能确定被锁住的代码执行时间很短,就应该用自旋锁取代互斥锁。

对于 99% 的线程级互斥锁而言,阻塞都是由操作系统内核实现的(比如 Linux 下它通常由内核提供的信号量实现)

自旋锁比互斥锁快得多,因为它通过 CPU 提供的 CAS 函数(全称 Compare And Swap),在用户态代码中完成加锁与解锁操作。在这里插入图片描述

CAS 忙等待

while (true) {
   
   
  //因为判断lock变量的值比CAS操作更快,所以先判断lock再调用CAS效率更高
  if (lock == 0 &&  CAS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值