FreeRTOS 信号量
来源:互联网 发布:易观智库数据准确么 编辑:程序博客网 时间:2024/05/20 03:41
FreeRTOS 的信号量包括二进制信号量、计数信号量、互斥信号量(以后简称互斥量)和递归互斥信号量(以后简称递归互斥量)。我们可以把互斥量和递归互斥量看成特殊的信号量。
信号量 API 函数实际上都是宏,它使用现有的队列机制。这些宏定义在 semphr.h 文件中。如果使用信号量或者互斥量,需要包含 semphr.h 头文件。
二进制信号量、计数信号量和互斥量信号量的创建 API 函数是独立的,但是获取和释放 API 函数都是相同的;递归互斥信号量的创建、获取和释放API函数都是独立的。
二进制信号量和互斥量非常相似,但也有细微的区别:互斥量具有优先级继承机制,二进制信号量没有这个机制。这使得二进制信号量更适合用于同步(任务之间或者任务和中断之间),互斥量更适合互锁。
互斥量和二进制信号量都是SemaphoreHandle_t类型。
二进制信号量
一旦获得二进制信号量后不需要恢复,一个任务或中断不断的产生信号,而另一个任务不断的取走这个信号,通过这样的方式来实现同步。
互斥量
互斥量是一个包含优先级继承机制的二进制信号量。
- 若用于实现同步(任务之间或者任务与中断之间)的,优先考虑使用二进制信号量,互斥量通常用于简单的互锁。
- 中断不能因为等待互斥量而阻塞。
- 低优先级任务拥有互斥量的时候,如果另一个高优先级任务也企图获取这个互斥量,则低优先级任务的优先级会被临时提高,提高到和高优先级任务相同的优先级。这意味着互斥量必须要释放,否则高优先级任务将不能获取这个互斥量,并且那个拥有互斥量的低优先级任务也永远不会被剥夺,这就是操作系统中的优先级翻转。
阅读全文
0 0
- FreeRTOS 信号量
- FreeRTOS 信号量
- FreeRTOS 信号量
- Freertos 二元信号量
- FreeRTOS内核详解----信号量
- FreeRTOS-二值信号量
- FreeRTOS-互斥信号量
- FreeRTOS系列第19篇---FreeRTOS信号量
- FreeRTOS高级篇6---FreeRTOS信号量分析
- FreeRTOS系列第19篇---FreeRTOS信号量
- FreeRTOS高级篇6---FreeRTOS信号量分析
- FreeRTOS系列第19篇---FreeRTOS信号量
- FreeRTOS学习------信号量(实践)
- FreeRTOS系列第20篇---FreeRTOS信号量API函数
- FreeRTOS系列第20篇---FreeRTOS信号量API函数
- FreeRTOS学习笔记——二值型信号量
- FreeRTOS学习笔记——互斥型信号量
- FreeRTOS 学习五:信号量和互斥锁
- java常用API-Properties类
- 冒泡排序
- 01-C#HelloWorld程序
- QTP VBScript脚本学习
- wget命令
- FreeRTOS 信号量
- 类与对象
- struct和typedef struct彻底明白了 && C语言结构体
- SSIS 获取当天日期
- 13.window滑动窗口以及热点搜索词滑动统计案例实战
- deepmind_lab Getting started on Linux的官方说明
- 虚拟世界和现实生活
- strfttime和sprintf 的区别和用法
- SFTP 使用简写