Linux驱动开发-内核互斥锁

互斥体概述
信号量是在并行处理环境中对多个处理器访问某个公共资源进行保护的机制,mutex用于互斥操作。
信号量的count初始化为1,down()/up()也可以实现类似mutex的作用。

mutex的语义相对于信号量要简单轻便一些,在锁争用激烈的测试场景下,mutex比信号量执行速度更快,可扩展性更好,另外mutex数据结构的定义比信号量小。

mutex的优点
mutex和信号量相比要高效的多:
mutex最先实现自旋等待机制
mutex在睡眠之前尝试获取锁
mutex实现MCS所来避免多个CPU争用锁而导致CPU高速缓存颠簸现象。


mutex的使用注意事项:
同一时刻只有一个线程可以持有mutex。
只有锁持有者可以解锁。不能再一个进程中持有mutex,在另外一个进程中释放他。
不允许递归地加锁和解锁。
当进程持有mutex时,进程不可以退出。
mutex必须使用官方API来初始化。
mutex可以睡眠,所以不允许在中断处理程序或者中断下半部中使用,例如tasklet、定时器等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值