程序员的自我修养-第一章
信号量与互斥量的区别
- 根本区别,互斥量用于线程的互斥,信号量用于线程的同步
- 互斥量只能为0/1,信号量可以为非负整数
- 互斥量的一组加锁和解锁只能在同一线程内使用,信号量可以在一个线程内释放,另一个线程内得到。
二元信号量也是信号量,主要保证线程的同步,但因为是二元的,只用0,1两个状态,也只能同时允许一个线程访问。从这一点上看与互斥量类型,但二元信号量与互斥量并不是完全相同,二元信号量终究是信号量,主要保证同步,可以在不同线程申请,释放,互斥量在哪个线程申请就在哪释放。
野火的freertos书中,有这样一段话:
二值信号量和互斥信号量(以下使用互斥量表示互斥信号量)非常相似,但是有一些细 微差别:互斥量有优先级继承机制,二值信号量则没有这个机制。这使得二值信号量更偏 向应用于同步功能(任务与任务间的同步或任务和中断间同步),而互斥量更偏向应用于 临界资源的访问。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Welcome!
评论
WalineDisqus
