RTT-信号量

RTT-信号量

概念

信号量就是一个标记位,释放信号量就是标记位加一,获取信号量后自动减一,减到0后不能再获取了。
信号量(Semaphore)是一种实现线程间通信的机制,实现线程之间同步或临界资源的互斥访问,常用于协助一组相互竞争的线程来访问临界资源。在多线程系统中,各线程之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。

接口

创建静态信号量

rt_err_t rt_sem_init (rt_sem_t sem, const char *name, rt_uint32_t value, rt_uint8_t flag)

删除静态信号量

rt_err_t rt_sem_detach (rt_sem_t sem)

创建动态信号量

rt_sem_t rt_sem_create (const char *name, rt_uint32_t value, rt_uint8_t flag)

删除动态信号量

rt_err_t rt_sem_delete (rt_sem_t sem)

获取信号量

rt_err_t rt_sem_take (rt_sem_t sem, rt_int32_t time)

释放信号量

rt_err_t rt_sem_release (rt_sem_t sem)

用法

  1. 定义信号量控制块
  2. 创建信号量
  3. 释放信号量
  4. 获取信号量
/* 按键释放信号量 */
static rt_thread_t key0_thread = RT_NULL;
static rt_thread_t key1_thread = RT_NULL;
/* 定义信号量控制块 */
static rt_sem_t test_sem = RT_NULL;

/* 创建一个信号量 */
test_sem 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tangYi0_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值