本文内容简介:
信号量 |
信号量简介 |
- 信号量像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一旦获得了钥匙,也就意味着该任务具有进入被锁部分代码的权限。一旦执行至被锁代码段,则任务一直等待,直到对应被锁部分代码的钥匙被再次释放才能继续执行。
- 信号量用于控制对共享资源的保护,但是现在基本用来做任务同步用。
- 要想获取资源的任务必须执行“等待”操作,
- 如果该资源对应的信号量有效值大于1,则任务可以获得该资源,任务继续运行。
- 如果该信号量的有效值为0,则任务加入等待信号量的任务表中。
- 如果等待时间超过某一个设定值,该信号量仍然没有被释放掉,则等待信号量的任务就进入就绪态
- 如果将等待时间设置为0的话任务就将一直等待该信号量
- 信号量通常分为两种:二进制信号量和计数型信号量。
二进制信号量只能取0和1两个值,计数型信号量的信号量值大于1,计数型信号量的范围由OS_SEM_CTR决定,OS_SE