UCOSIII——临界区、任务挂起与恢复
UCOSIII——临界区、任务挂起与恢复
在UCOS3中,宏观定义上讲述,多个任务同时运行
简单的理解临界区与任务挂起
假设任务一和任务二的优先级一样
两个任务中都有printf函数的调用
那么任务一和任务二在程序运行的时候会互相打断
导致printf函数输出的内容不完整
如何解决呢
可以在任务将要被调度(打断)前进入临界区
函数执行完毕后
必须立刻退出临界区,恢复任务调度
/*进入临界区:锁定内核,停止任务调度,
还有阻塞函数、睡眠函数禁止添加在临界区里面,会失效*/
OS_CRITICAL_ENTER();
printf("Print complete sentences");
//立即退出临界区:解锁内核,恢复任务调度