二值信号量 vs 互斥量

一、对比表

对比维度 二值信号量(Binary Semaphore) 互斥量(Mutex)
本质 计数器 = 1 的信号量("令牌开关") 独占资源的 "锁"
核心用途 任务间 / 中断 - 任务同步(时序协调) 保护共享资源(防止并发访问)
资源归属 无归属,任意任务可获取 / 释放 有归属(仅持有任务可释放)
关键机制 无优先级继承 / 天花板 支持优先级继承(解决优先级反转)
中断支持 支持(中断中 Give,任务中 Take) 不支持(仅任务中操作)
死锁风险 低(无归属) 高(同一任务重复获取会死锁)
释放限制 非持有任务也可释放 仅持有任务能释放
典型场景 中断通知任务、任务间同步触发 访问串口 / 传感器 / 全局变量

二、总结

  1. 核心定位:二值信号量管 "同步",互斥量管 "互斥";
  2. 关键区别:互斥量有 "资源归属" 和 "优先级继承",二值信号量无;
  3. 避坑原则:保护共享资源优先用互斥量,时序协调优先用二值信号量;
  4. 禁忌:中断中绝不能操作互斥量,二值信号量仅能在中断中 "释放",不能 "获取"。
相关推荐
峥无7 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
不会代码的小猴8 小时前
3. 控件学习1
开发语言·c++·笔记·qt·算法
疯狂打码的少年10 小时前
【数据结构】图的存储结构:邻接矩阵与邻接表
数据结构·笔记
蒸蒸yyyyzwd10 小时前
cpp 选手准备秋招学习笔记 day10
笔记·面试·求职招聘
haerapicom11 小时前
欠定方程里藏着哪几个非零项:OMP 稀疏恢复侦探笔记
笔记
程思扬11 小时前
Android ANR实战排查:主线程SystemClock.sleep导致页面启动偶现无响应
android·笔记
zjnlswd12 小时前
C#学习笔记4
笔记·学习·c#
青山是哪个青山13 小时前
LangChain 学习笔记(九):上下文与记忆
笔记·学习·langchain
Z59981784115 小时前
c#软件开发学习笔记--Modbus-TCP/UDP网口通讯
笔记·学习·c#
阿里巴巴首席技术官16 小时前
目标检测基础
笔记·yolo