原帖 | Jack | 2024-12-04 20:26 | 👍0 | 阅读约1
FreeRTOS中互斥锁和信号量的区别:
0.互斥锁=互斥量=互斥二值信号量。
1.互斥锁可以理解为带有优先级继承的二值信号量,优先级继承可以防止优先级翻转。
2.互斥锁讲究一个资源只能同时只有一个线程访问。并且,互斥锁是谁拿锁,谁释放。比如,当前有一把互斥锁S,有ABC三个线程,那么如果A线程获得了互斥锁S,那么B和C是获得不了的,只有当A线程亲自释放了互斥锁,B和C才能获得。
3.信号量(如果不是二值信号量),假如当前信号量为3, 那么有四个线程,ABCD,线程ABC都拿了信号量,那么信号量这时候就是0了,线程D来拿是就拿不到,就访问不了资源(进入阻塞状态,或者返回错误),但是这时候,线程ABC中任意一个人释放了信号量,都可以让D拿到资源运行。
4.互斥锁不可以在中断中使用,信号量可以在中断中使用。
相关笔记