$darkmode
提供具有优先级继承的互斥访问机制 更多...
结构体 | |
struct | rt_mutex |
互斥量结构体 更多... | |
类型定义 | |
typedef struct rt_mutex * | rt_mutex_t |
互斥量类型指针定义 | |
函数 | |
rt_err_t | rt_mutex_init (rt_mutex_t mutex, const char *name, rt_uint8_t flag) |
初始化静态互斥量 更多... | |
rt_err_t | rt_mutex_detach (rt_mutex_t mutex) |
脱离静态互斥量 更多... | |
rt_mutex_t | rt_mutex_create (const char *name, rt_uint8_t flag) |
创建动态互斥量 更多... | |
rt_err_t | rt_mutex_delete (rt_mutex_t mutex) |
删除动态互斥量 更多... | |
rt_err_t | rt_mutex_take (rt_mutex_t mutex, rt_int32_t timeout) |
阻塞式获取互斥量 更多... | |
rt_err_t | rt_mutex_trytake (rt_mutex_t mutex) |
尝试立即获取互斥量 更多... | |
rt_err_t | rt_mutex_release (rt_mutex_t mutex) |
释放互斥量 更多... | |
rt_err_t | rt_mutex_control (rt_mutex_t mutex, int cmd, void *arg) |
控制互斥量的行为 更多... | |
提供具有优先级继承的互斥访问机制
RT-Thread 互斥锁特性:
典型应用场景:
rt_err_t rt_mutex_init | ( | rt_mutex_t | mutex, |
const char * | name, | ||
rt_uint8_t | flag | ||
) |
初始化静态互斥量
该函数初始化由用户提供内存的互斥量。适用于静态分配场景
[in] | mutex | 互斥量指针 | ||||||
[in] | name | 互斥量名称 | ||||||
[in] | flag | 等待标志位
|
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_err_t rt_mutex_detach | ( | rt_mutex_t | mutex | ) |
脱离静态互斥量
将静态互斥量从内核中移除,但不释放其占用的内存
[in] | mutex | 互斥量指针 |
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_mutex_t rt_mutex_create | ( | const char * | name, |
rt_uint8_t | flag | ||
) |
创建动态互斥量
系统自动为互斥量分配内存,适用于运行时创建互斥量的场景
[in] | name | 互斥量名称 | ||||||
[in] | flag | 等待标志位
|
!RT_NULL | 成功 |
RT_NULL | 失败 |
rt_err_t rt_mutex_delete | ( | rt_mutex_t | mutex | ) |
删除动态互斥量
释放通过 rt_mutex_create() 创建的互斥量及其占用的内存
[in] | mutex | 互斥量指针 |
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_err_t rt_mutex_take | ( | rt_mutex_t | mutex, |
rt_int32_t | timeout | ||
) |
阻塞式获取互斥量
获取失败会阻塞线程指定时间直到成功或超时
[in] | mutex | 互斥量指针 | ||||||||
[in] | timeout | 超时时间
|
RT_EOK | 成功 |
-RT_ETIMEOUT | 超时 |
!RT_EOK | 失败 |
rt_err_t rt_mutex_trytake | ( | rt_mutex_t | mutex | ) |
尝试立即获取互斥量
若互斥量不可用则立即返回,不阻塞
[in] | mutex | 互斥量指针 |
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_err_t rt_mutex_release | ( | rt_mutex_t | mutex | ) |
释放互斥量
当前线程释放已获取的互斥量,可能唤醒等待队列中的线程
[in] | mutex | 互斥量指针 |
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_err_t rt_mutex_control | ( | rt_mutex_t | mutex, |
int | cmd, | ||
void * | arg | ||
) |
控制互斥量的行为
通过命令设置或获取互斥量属性
[in] | mutex | 互斥量指针 |
[in] | cmd | 控制命令 |
[in] | arg | 命令参数指针 |
RT_EOK | 成功 |
!RT_EOK | 失败 |