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)
用法
- 定义信号量控制块
- 创建信号量
- 释放信号量
- 获取信号量
/* 按键释放信号量 */
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

最低0.47元/天 解锁文章
1163

被折叠的 条评论
为什么被折叠?



