打印

关于信号量的问题

[复制链接]
1866|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tiger84|  楼主 | 2007-6-9 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一直对信号量模模糊糊,今天觉得这段描述不错,大家讨论讨论。
下面是节选的一本描述UCOS上对信号量的叙述。

一般来说,对信号量只能实施3种操作:初始化,也可称作建立;等信号,也可称作挂起;给信号或者发信号。信号量初始化时,要给信号量赋初值,等待信号量的任务表应清为空。

想得到信号量的任务,须执行“等待”操作。如果该信号量有效(信号量值大于0),则信号量值减1,任务得以继续运行。如果信号量的值为0,等待信号量的任务就被列入等待信号量任务表。如果等待时间超过了某一设定值,该信号量还是无效,则等待信号量的任务进入就绪态,准备运行,并返回出错代码(指出发生了等待超时错误)。

任务以“发信号”操作释放信号量。如果没有任务等待信号量,那么信号量的值仅是简单的加1;如果有任务等待该信号量,那么就会有一个任务进入就绪态,信号量的值也就不加1。于是钥匙给了等待信号量的诸任务中的一个任务。至于给了哪个任务,要看内核是如何调度的。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

862

帖子

0

粉丝