目录
信号量的简介:
实现任务间通信机制,可以实现任务之间同步或临界资源的互斥访问,协助一组相互竞争的任务来访问临界资源。A访问的时候B不能访问
二值信号量:
既可以用于临界资源访问,也可以用于同步功能
计数信号量:
二进制信号量可被认为是长度为1的队列,计数信号量可以被看做长度大于1的队列,只关心队列有消息即可,不用关心对列中的信息,可以标识未处理事件数目,系统中可使用资源数目
互斥信号量:
更适用于简单互锁,是一种特殊的二值信号量,有优先级继承机制,可以防止优先级翻转
递归信号量:
在获取过此信号量情况下,仍然可以在此获取此信号量
二值信号量的运作机制:
计数信号量的运作机制:
信号量的控制块:
(1)表示有效信号量的个数
(2)最大信号量可用个数
(3)无需存储空间
常用信号量API函数:
创建二值信号量:
xSemaphoreCreateBinary();
创建计数信号量:
xSemaphoreCreateCouting();
信号量删除:
vSemaphoreDelete()
信号量释放:
xSemaphoreGive()
带中断保护的信号量释放:
xSemaphoreGiveFromISR()
信号量的获取:
xSemaphoreTake()
带中断保护的信号量获取:
xSemaphoreTakeFromISR()