[RT-Thread]互斥锁(mutex)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[RT-Thread]互斥锁(mutex)相关的知识,希望对你有一定的参考价值。
参考技术A 和 semaphore 一样, mutex 在RTT中也归类为 ipc ( ipc 应该是进程间通信,感觉命名是不是有点不贴切)。mutex 用于资源互斥的场景,比如多个线程可能同时访问(R/W)同一个全局变量,这个时候,就需要加锁控制。
仍然主要关注 mutex控制块 、 take 和 release 操作。
parent :
和其它 ipc 方式相同,主要是维护 suspend_thread 。
value :
value其实就两个值:0或者1,1表示已被持有,0表示空闲状态。
original_priority :
保存持有该mutex的thread的本来的线程优先级,便于优先级继承后,恢复原本线程优先级。
hold :
hold 记录被同一thread请求的次数,嵌套场景。
owner :
持有该mutex的thread。
6.5 linux内核互斥锁
参考技术A 互斥锁是信号量的特例。信号量的初始值表示有多少个任务可以同时访问共享资源,如果初始值为1,表示只有1个任务可以访问,信号量变成互斥锁(Mutex)。1.同一时间只能有一个任务持有互斥锁,而且只有这个任务可以对互斥锁进行解锁。
2.使用中的互斥锁是不能被重新初始化的。
3.并且互斥锁不能用于中断上下文。
mutex结构体
mutex初始化
mutex加锁
mutex解锁
1、mutex初始化
a) 动态初始化
b) 静态初始化
2、mutex加锁
3、mutex解锁
drivers/input/evdev.c
以上是关于[RT-Thread]互斥锁(mutex)的主要内容,如果未能解决你的问题,请参考以下文章