hualiming025 发表于 2014-3-24 10:21

二值信号量与互斥信号量区没区别吗?

    二值信号量OSSemCreate(1)
    互斥信号量 OSMutexCreate(,,)
    看到ucosII的官方模板中,对LCD访问控制时使用的是二值信号量,而不是我认为应该使用的互斥信号量,虽然我知道这两种方法都能保证任务对LCD访问是独享的,但是对此还是心生疑问,那个二值信号量不是存在优先级翻转现象吗?

ballack_linux 发表于 2014-3-24 13:04

有明显区别啊你可以查看ucosII源码, 可以看到 互斥信号量会提高当前运行任务的优先级,从而防止在访问共享资源时被更高优先级的任务抢占

ballack_linux 发表于 2014-3-24 13:22

可查看这段OSMutexPend代码

hualiming025 发表于 2014-3-24 13:48

ballack_linux 发表于 2014-3-24 13:04 static/image/common/back.gif
有明显区别啊你可以查看ucosII源码, 可以看到 互斥信号量会提高当前运行任务的优先级,从而防止在访问共 ...

那你说说看,ucos发布的代码用二值信号量来保护对LCD的访问,你觉得这样好不好?

ballack_linux 发表于 2014-3-24 14:03

那你要看是否可以被抢占啦,二值信号量是使可以共享资源独占访问的,但是如你自己所说,会导致优先级反转的问题。如果你的LCD访问可以被抢占而不会出错误,那是可以的
页: [1]
查看完整版本: 二值信号量与互斥信号量区没区别吗?