文章目录
递归互斥量
递归互斥信号量可以看作是一个特殊的互斥信号量,已经获取了互斥信号量的任务就不能再次获取这个互斥信号量,但是递归互斥信号量不同,已经获取了递归互斥信号量的任务可以再次获取这个递归互斥信号量,而且次数不限!一个任务使用函数
xSemaphoreTakeRecursive()
成功的获取了多少次递归互斥信号量就得使用函数xSemaphoreGiveRecursive()
释放多少次!比如某个任务成功的获取了 5 次递归信号量,那么这个任务也得同样的释放 5 次递归信号量。
创建递归互斥量 xSemaphoreCreateRecursiveMutex
创建一个递归互斥信号量。
SemaphoreHandle_t xSemaphoreCreateRecursiveMutex( void );
参数:
无
返回值:
NULL: 互斥信号量创建失败。
其他值: 创建成功的互斥信号量的句柄。
释放递归互斥信号量 xSemaphoreGiveRecursive
释放递归互斥信号量
BaseType_t xSemaphoreGiveRecursive( SemaphoreHandle_t xMutex );
参数:
xMutex:递归互斥信号量句柄
返回值:
pdPASS:创建递归互斥量成功
pdFAIL:创建递归互斥量失败
获取递归互斥信号量 xSemaphoreTakeRecursive
获取递归互斥信号量
BaseType_t xSemaphoreTakeRecursive( SemaphoreHandle_t xMutex,
TickType_t xTicksToWait );
参数:
xMutex:递归互斥信号量句柄
xTicksToWait:等待阻塞时长
返回值:
pdPASS:成功
pdFAIL:失败