搜索
bottom↓
回复: 1

uC/OS-III删除信号量的疑问

[复制链接]

出0入10汤圆

发表于 2014-10-7 21:20:40 | 显示全部楼层 |阅读模式
信号量删除这里看了一天,好像看懂了,但是还是对uC/OS-III删除信号量的操作有点疑问。
删除信号量的时候,有两个选择,一个是
OS_OPT_DEL_NO_PEND          Delete semaphore ONLY if no task pending
就是说如果选择这种删除信号量必须任务没有被内核对象挂起。
另一个很大尺度,一下子就把要删除的信号挂起的所有的任务都就绪,包括原来任务可能被多个内核对象挂起,也不只是删除信号量这个内核对象。这是我的理解,包括看源码,源码注释,邵贝贝的书都是这个解释。
OS_OPT_DEL_ALWAYS           Deletes the semaphore even if tasks are waiting. In this case, all the tasks pending will be readied.

那么问题来了,如果我要一种操作,我只是想删除信号量挂起的任务中这个信号量,不想删除除信号量挂起的任务的其他内核对象,就是说如果一个任务同时被队列和信号量挂起,按照我的理解如果我想单纯删除信号量挂起操作是不可能的,要么两个一起删,要么都不删。现在想问下是我理解哪里错了,我觉得uC/OS肯定不会不考虑这种情况的,这种操作在我看来很正常啊,请大神们多多指教!!
另外吐槽下uC/OS-III的资料好少啊,有没有人贡献点。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入10汤圆

 楼主| 发表于 2014-10-8 21:08:50 | 显示全部楼层
终于想明白了,一个任务是不可能被多个内核对象pend起的,一旦被一个内核对象pend,那么CPU使用权已经被占用!不可能再被队列等挂起。官方有一些函数是支持被多个内核对象挂起的,但是那些是或的关系,也就是说只要多个挂起同一个内核对象的,只要有一个被删除,或者提交,或者抛弃,都会就绪!!!!!!!!!!!!!!!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 07:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表