os_mutex_unlock
所属模块:通信机制 | 类型:互斥锁释放函数
函数简介
os_mutex_unlock 用于释放指定互斥锁,
并恢复任务在获取锁之前的原始优先级。
该函数通常与 os_mutex_lock 成对使用,
用于保护临界区资源访问。
函数原型
char os_mutex_unlock(u8 id) reentrant;
参数说明
| 参数 |
说明 |
| id |
锁ID(0 ~ OS_PROCESS_LOCK_NUMBER-1) |
源码实现
char os_mutex_unlock(u8 id) reentrant
{
if(id >= OS_PROCESS_LOCK_NUMBER)
return -1;
if(OS_PROCESS_LOCK[id].id == OS_YUNXING_BIANHAO)
{
OS_PEOCESS_OK[OS_YUNXING_BIANHAO] =
OS_PROCESS_LOCK[id].psw;
OS_PROCESS_LOCK[id].id = 0;
OS_PROCESS_LOCK[id].psw = 0;
}
return 0;
}
使用示例
void task1()
{
while(1)
{
os_mutex_lock(0);
// 临界区操作
shared_data++;
os_mutex_unlock(0);
}
}
注意事项
只有持有锁的任务才能释放该锁,否则释放操作将被忽略。