主题:计数信号量可以用于资源管理,允许多个任务获取信号量访问共享资源,但会限制任 务的最大数目。访问的任务数达到可支持的最大数目时,会阻塞其他试图获取该信号量的 任务,直到有任务释放了信号量。
1.常用信号量函数接口
①创建计数信号量 xSemaphoreCreateCounting()
用法:
CountSem_Handle = xSemaphoreCreateCounting(5,5);
if(NULL != CountSem_Handle)
printf("CountSem_Handle计数信号量创建成功!\r\n");
②xSemaphoreTake()函数用于获取信号量,不带中断保护。
用法:
xSemaphoreTake( xSemaphore, xBlockTime )
![](https://i-blog.csdnimg.cn/direct/5daf8ed6f751460caf5f356a4b7ea66c.png)
③
xSemaphoreGive()
是一个用于释放信号量,不可中断
用法:
xSemaphore 信号量句柄
xSemaphoreGive( xSemaphore )
2.例子
是模拟停车场工作运行。在创建信号量的时候初始化
5
个可用的信 号量,并且创建了两个任务:一个