os_mutex_unlock

所属模块:通信机制 | 类型:互斥锁释放函数

函数简介

os_mutex_unlock 用于释放指定互斥锁, 并恢复任务在获取锁之前的原始优先级。

该函数通常与 os_mutex_lock 成对使用, 用于保护临界区资源访问。

函数原型

char os_mutex_unlock(u8 id) reentrant;

参数说明

参数 说明
id 锁ID(0 ~ OS_PROCESS_LOCK_NUMBER-1)

返回值

0 表示释放成功,-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); } }

注意事项

只有持有锁的任务才能释放该锁,否则释放操作将被忽略。

相关推荐