本帖最后由 myh9970 于 2017-7-3 17:33 编辑
问题1、在ucosiii中对于共享资源的访问,正常写法是加信号量(阻塞,持续等待)对其进行访问,如果两个任务都对同一共享资源访问的情况下,不会造成两任务互锁情况,因为在等待过程中系统会将该任务挂起,对吧?
问题2,在ucosiii中要是对共享资源的访问,加两个锁,一个锁套着另一个锁(下面配个简图),在两个任务都对该共享资源进行访问,是不是就可能会造成两任务互锁的情况,我做实验没有做出来,问一下原子哥和大家,理论上是不是存在这样的可能。即任务1拿到信号量1但是没有拿到信号量2,任务2拿到信号量2,没有拿到信号量1时,两个任务永远也访问不了共享资源,只会进行交替挂起,两个任务也不会再进行运行了。
问题3、都有什么情况下,会造成两个任务的互锁(两任务都不在运行,其他任务均正常运行)。
----------------------------------------
任务1
获取信号量1
获取信号量2
访问共享资源
释放信号量2
释放信号量1
--------------------------------------
--------------------------------------
任务2
获取信号量1
获取信号量2
访问共享资源
释放信号量2
释放信号量1
-------------------------------------
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我也不会,可是工程代码就是这样实现的,我在调试前辈代码过程中发现的,代码本身运行没有问题,但是在其中一个任务中又添加了一个对flash访问的一些代码,就出现问题了,一个任务在写,另一个任务也在写出现了这样的问题,我觉的理论上是不应该出现问题的,我没有用过两个信号量的情况,特此来寻医问药,主要还是想了解一下,都有哪些情况会造成两个任务挂掉,其他任务可以正常运行的情况,不考虑删除任务。
一周热门 更多>