信号量的原理
信号量就是通过一个信号量来控制多线程的访问共享资源,如果信号量是2值,他就是一个互斥锁
如果是3,4值,就可以是红绿灯,可以控制哪一路线程执行什么操作;
高铁里厕所,是2值信号量,有人进去就锁上锁,出来就释放锁
停车场的停车,有3个车位,停车场,闸机,一辆车进去的时候,信号量间1,有车出来就信号量加1,等没有车出来,第三辆车进去的时候,信号量为0,无法停进去
int os_sem_create(OS_SEM *, int);
/* --------------------------------------------------------------------------*/
/**
- @brief :非阻塞方式查询信号量
- @Param sem :信号量
- @Returns :错误码
/
/ ----------------------------------------------------------------------------*/
int os_sem_accept(OS_SEM *);
/* --------------------------------------------------------------------------*/
/**
- @brief :阻塞方式获取信号量
- @Param sem:信号量
- @Param timeout:等待时长,0表示一直等待
- @Returns :错误码
/
/ ----------------------------------------------------------------------------*/
int os_sem_pend(OS_SEM *, int timeout);
/* --------------------------------------------------------------------------*/
/**
- @brief :发送信号量
- @Param sem:信号量
- @Returns :错误码
/
/ ----------------------------------------------------------------------------*/
int os_sem_post(OS_SEM *);
/* --------------------------------------------------------------------------*/
/**
- @brief :信号量删除
- @Param sem:信号量
- @Param block:保留
- @Returns :错误码
/
/ ----------------------------------------------------------------------------*/
int os_sem_del(OS_SEM *, int block);
/* --------------------------------------------------------------------------*/
/**
- @brief :信号量设置
- @Param sem:信号量
- @Param cnt:计数值
- @Returns :错误码
/
/ ----------------------------------------------------------------------------*/
int os_sem_set(OS_SEM *, u16 cnt);
/* --------------------------------------------------------------------------*/
/**
- @brief :信号量类型是否queueQUEUE_TYPE_COUNTING_SEMAPHORE
- @Param : true:信号量匹配, fail:信号量不匹配
- @Returns :错误码
/
/ ----------------------------------------------------------------------------*/
int os_sem_valid(OS_SEM *);
/* --------------------------------------------------------------------------*/
/**
- @brief :判断信号量是否可用
- @Param sem:信号量
- @Returns :可用数量
/
/ ----------------------------------------------------------------------------*/
int os_sem_query(OS_SEM *);
信号量的使用场景
所以程序开发的时候,什么场景使用信号量呢????欢迎补充