问题描述:
task1:等待sem1,然后发送MBox1,给task2;
task2:等待MBox1执行完后,发sem1,
task3:等待sem2,然后发送QSem,给task4;
task4:等待QSem,执行完后,发sem2,
问题在于,如果task1优先级比task3高,那么,task3,可能就收不到,然后task4就停止发送sem2,
这个问题怎么处理呢,在task3设置等待超时,重新发QSem,或者在task4:设置超时,发送sem2吗?
------解决方案--------------------
如果t1和t2比t3和t4优先级高,就会出现所谓“饥饿”的问题;
你说的方法不行,因为cpu已经被t1和t2占用,t3或t4得不到运行的机会。
解决的方法就是调度。例如,基于等待时间的长短进行调度。如果等的时间太长了,调整优先级,使得t3和t4有机会运行。
------解决方案--------------------
也要看task2和task4的具体执行任务的优先级和时间的长短,他们会阻塞task1 task3运行的。合理调度。。。