5-3 信号量及其操作之1

5-3 信号量及其操作
当事件控制块成员 OSEventType 的值设置为 OS_EVENT_TYPE_SEM 时,这个事件控制块描述就是一个信号量。
信号量有(信号量计数器)和(等待任务表) 两部分组成。
这说了啥???
保持冷静-----信号量就是两个任务之间传递消息的。
每当有“任务” —申请信号量—时,如果信号量计数器OSEventCnt 的值大于0 ,(也就是这时申请不到信号量)则把OSEventCnt 值减-1 ,使任务继续运行;

(每当有任务 ----来申请信号量时---- 就判断信号量事件控制块中----信号量计算器的值是否大于或等于零----如果大于零—则把计算器减1----并使任务继续运行)

我为什么要申请信号量 ?-----要传递数据给别的任务
需要创建信号量?如果不创建怎么去哪里申请?
----肯定是需要创建信号量,在使用信号量之前,应用程序必须调用
OSSemCreate() 来创建一个信号量,函数原型如下:
OS_EVENT *OSSemCreate( INT16U cnt); //信号量计数器的初值
函数返回值为已创建信号量的指针。

每当有----申请信号量----- 如果OSEventCnt= 0 ,则会将—任务----列入-----等待列表OSEventTbl[] ,而使任务处于等待状态。
如果正在使用信号量的任务释放了该信号量,则会在任务等待表找出优先级最高的等待任务,并使他就绪后调用调度器引发一次调度;

如果任务等待列表中没有等待任务,则信号量计算器只简单 “ OSEventCnt +1 “ .

不能把复杂问题简单的描述出来,
不是学生的问题一定是老师的问题.
(可惜这样的老师很少碰到)
每当李老板来电话的时候
光头强都需要看看熊大熊二在没有在森林中放哨,
如果这时他兄弟两个都在,这时候光头强记录把每天固定李老板崔木头次数减 -1 ;
光头强继续伪装,李老板也暂时不在发送命令。
如果李老板再次过来砍木头的命令
光头强查看了没有熊大熊二在看守 = 0 ,
光头强就把这个时间段放在 “等待任务列表中” ,
(而使任务处于等待状态)如果工具正好在手边
则会执行光头强的任务中优先选择级别最高的砍树任务。

如果光头强的等待列表中没有等待任务
则光头强的“信号量计数器” + 1 (也就是今天大爷砍过数了少他奶奶的莱烦大爷 +1 愤怒值)

我觉得说的还是不够好,能不能这样说
每当 李老板 有“ 任务申请信号量 ”=== “有申请砍树的任务时” (光头强翻身了)—
如果光头强的一天计划工作的事情中 大于 0 也就是“信号量计数器中”大于 0
李老板只能要求 光头强 – 1 个-------- 这天的工作计划事情
光头强继续 执行 现在的任务,不打乱工作未来的 -1 个工作计划

如果光头强 这一天的工作事件中 = 0,则会将 李老板的 “申请砍树任务”
放在他的------任务等待列表中,
如果这时候 熊大熊二没有 捣乱----(优先级考虑)
这时候光头强就会直接砍倒一棵树
也就是引发一次调度

如果光头强的 任务等待列表中没有等待任务
也就完成了一天的砍树任务了
李老板来电话
也只是在光头强的信号量计算器中 +1 完事
强哥不吊你李老板,
想让加班没门

看来强哥越来越帅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值