os_sem_give
所属模块:通信机制 | 类型:信号量释放函数(V操作)
函数简介
os_sem_give 用于释放信号量(V操作),
使信号量计数增加,从而唤醒可能正在等待该资源的任务。
该函数常用于任务同步、资源释放与事件通知场景。
函数原型
char os_sem_give(u8 id);
参数说明
| 参数 |
说明 |
| id |
信号量ID(0 ~ OS_INFORMATION_PUBLIC-1) |
源码实现
char os_sem_give(u8 id) reentrant
{
if(id >= OS_INFORMATION_PUBLIC)
return -1;
EA = 0;
OS_INFORMATION_COMMON[id]++;
EA = 1;
return 0;
}
使用示例
void task_producer()
{
while(1)
{
// 生产资源
os_sem_give(0);
}
}
void task_consumer()
{
while(1)
{
os_sem_take(0);
// 消费资源
}
}
注意事项
信号量操作应成对使用(take / give),否则可能导致资源计数错误。