信号量( Semaphore ),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代码段不被并发调用。信号量这个名字,我们可以把它拆分来看,信号可以起到通知信号的作用,然后我们的量还可以用来表示资源的数量,当我们的量只有0 和 1 的时候,它就可以被称作二值信号量,只有两个状态,当我们的那个量没有限制的时候,它就可以被称作为计数型信号量。信号量也是队列的一种。
什么是二值信号量?
互斥访问:比如门钥匙,只有获取到钥匙才可以开门任务同步:比如电影上映后你才可以看到
二值信号量相关 API 函数
1. 创建二值信号量
参数:无返回值:成功,返回对应二值信号量的句柄;
2. 释放二值信号量
参数:xSemaphore :要获取的信号量句柄xTicksToWait :超时时间, 0 表示不超时, portMAX_DELAY 表示卡死等待;返回值:成功,返回 pdPASS ;失败,返回 errQUEUE_FULL 。
实验Demo
创建一个二值信号量,按下 KEY1 则释放信号量,按下 KEY2 获取信号量。
计数型信号量相当于队列长度大于 1 的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建的时候确定的。
计数型信号量相关 API 函数
计数型信号量的释放和获取与二值信号量完全相同 !
参数:uxMaxCount :可以达到的最大计数值 uxInitialCount :创建信号量时分配给信号量的计数值返回值:成功,返回对应计数型信号量的句柄;失败,返回 NULL 。
实验Demo
创建一个计数型信号量,按下 KEY1 则释放信号量,按下 KEY2 获取信号量。
记得点赞+收藏
到此这篇sem_wait返回值(waitkey返回值)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rgzn-aibigd/36921.html