|
信号量删除这里看了一天,好像看懂了,但是还是对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
|