os_sem_give

所属模块:通信机制 | 类型:信号量释放函数(V操作)

函数简介

os_sem_give 用于释放信号量(V操作), 使信号量计数增加,从而唤醒可能正在等待该资源的任务。

该函数常用于任务同步、资源释放与事件通知场景。

函数原型

char os_sem_give(u8 id);

参数说明

参数 说明
id 信号量ID(0 ~ OS_INFORMATION_PUBLIC-1)

返回值

0 表示成功,-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),否则可能导致资源计数错误。

相关推荐