3325|2

16

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

请问大家uC/OS-II中Sem具体应用在什么样的实例? [复制链接]

 平时场景或是可用Flag/Mutex搞定,几个任务共用的很少遇到。

最新回复

学习了,呵呵  详情 回复 发表于 2013-1-5 18:44
点赞 关注
个人签名闪闪微星
 

回复
举报

436

帖子

5

TA的资源

五彩晶圆(初级)

沙发
 
Sem和mutex最大不同之处在于mutex只能是2值的,而Sem一般是多值的,可以支持多个任务获得资源。sem也叫整数型信号量,mutex也叫二值信号量。mutex是sem的一个特例。具体实例:

实例1.    一般在通信的接收方会建立缓冲区,可以是环形缓冲区,比如说这个环形缓冲区有8块,那Sem的初始值应该设置为8。每次收到一块长度的数据就放入到缓冲区中,同时调用OSSemPost给sem加1,而如果从缓冲区里面取出一块长度的数据,将调用OSSemPend,sem减1,当然这些过程中也需要移动各自的块指针。当OSSemPend时发现sem为0,则说明缓冲区中没有数据可用了,当前这个任务就会进入挂起状态,等待有数据放入它会被置为就绪态。这个实例中,针对sem有取数据和放数据这样两个任务。

实例2.    和实例1不同的是,多个共享资源可以被多个任务申请,也可以被多个任务释放,申请资源的任务可以同时是或不是释放资源的任务,而且申请是无序。例如火车站检票口或者是超市付账出口可以有很多,出站的人也有很多,可以从任意一个出,所以也就是无序的。

还有很多使用实例,需要看具体的需求,另外,也有很多情况下可以使用mutex来解决sem可以解决的资源互斥或分配问题。
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
学习了,呵呵
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表