某次实验中,任务1两次调用OSsuspend挂起任务2,之后任务调用一次OSresume解挂任务2,结果发现解挂失败。
后来发现解挂两次,任务2被恢复。
挂起的时候任务控制块的成员变量SuspendCtr用来记录任务挂起次数!每挂起一次此变量就加一,解除挂起的时候此变量就会减一。只有最后一次解除挂起任务才会起作用的。也就是你所谓的试验结果,连续两次调用函数OSTaskSuspend()挂起一个任务,那么就需要调用两次解除函数OSTaskResume()才能最终恢复任务的运行!!!!
引用一下http://www.openedv.com/forum.php?mod=viewthread&tid=105923&extra=page%3D6
二楼的答复,查询了源码,确实如此。