2350|2

17

帖子

0

资源

一粒金砂(中级)

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

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

回复

452

帖子

5

资源

五彩晶圆(初级)

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可以解决的资源互斥或分配问题。

回复

29

帖子

0

资源

一粒金砂(中级)

学习了,呵呵

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

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

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

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

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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