计数型信号量
我们把队列项长度大于1的队列叫做计数型信号量,同二值信号量一样我们只需要关心队列是否为空就行。
创建计数型信号量函数
xSemaphoreCreateCounting()这个函数是通过动态内存管理来分配内存的,实质是一个宏。正真完成创建的函数是xQueueCreateCountingSemaphore()函数原型如下
SemaphoreHandle_t xSemaphoreCreateCounting(UBaseType_t uxMaxCount,
UBaseType_t uxInitialCount)
uxMaxCount : 计数信号量最大计数值,当信号量等于此值时释放信号量就会失败。
uxInitialCount : 计数信号量初始值
返回值:
NULL 计数型信号量创建失败
其他值:计数型信号量创建成功,返回计数型信号量句柄
xSemaphoreCreateCountingStatic()使用这个函数时使用的内存需要自己分配,实质是一个宏。正真完成创建的函数是xQueueCreateCountingSemaphoreStatic()函数原型如下
SemaphoreHandle_t xSemaphoreCreateCountingStatic(UBaseType_t uxMaxCount,
UBaseType_t uxInitialCount,
StaticSemaphore_t* pxSemaphoreBuffer)
uxMaxCount : 计数信号量最大计数值,当信号量值等于此值的时候释放信号量就会失败。
uxInitialCount: 计数信号量初始值
pxSemaphoreBuffer: 指向一个StaticSemaphore_t 类型的变量,用来保存信号量结构体。
返回值
NULL&#