• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

怎么使用ucos的信号量

Sixer 2020-08-23 浏览量:563
应该怎么使用ucos的信号量,在什么情况下使用二进制信号量和数值型信号量
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 信号量,在操作系统中是用来实现互斥和同步用的,信号量将共享资源的同时用户数量限制为最大数量,uCos中任务对资源的访问需要有个先后顺序。二进制信号量,即同时能够访问资源任务数为1,做到互斥访问;而数值型信号量,即资源允许最多有多少任务可以访问资源,当多个任务对资源进行访问时需要保证任务间的同步,可以考虑数值型信号量,二进制信号量是数值型信号量的特例(n=1允许访问资源最大任务数n)
    • 发布于 2020-08-24
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 信号量,队列,邮箱等等,这些都是RTOS任务间的通讯方式,简称IPC。

    当然,任务间通讯,我们用全局变量通讯,99%以上,是没有任何问题。但是保不齐有时候,会出问题。

    因为你不能决定各个任务执行的先后顺序。

    但是你用RTOS提供的IPC方式,那就能很好的避免这个问题。所以,一般在使用RTOS,任务间需要通讯,建议使用IPC,不要使用全局变量

    • 发布于2020-08-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用OSSemCreate创建信号量

    申请:voidOSSemPend
    释放:INT8U OSSemPost

    • 发布于2020-08-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 就使用系统的API函数来创建与申请、释放

    至于什么时候用,一般是在对共公资源有竞争关系的外设使用时,用信号量来进行互锁

    或是来进行任务间的通讯

    • 发布于2020-08-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果你的那个临界区允许多个进程占用,就用多值信号量,否则用二值信号量
    • 发布于2020-08-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 需要看你的使用条件,比如这个状态只有两种,准备好跟没准备好,就可以使用二值形
    • 发布于2020-09-29
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

怎么使用ucos的信号量