OpenEdv-开源电子网

标题: UCOSIII使用信号量访问共享资源区时,任务调用及执行顺序不太理解 [打印本页]

作者: Rayc    时间: 2019-6-17 17:51
标题: UCOSIII使用信号量访问共享资源区时,任务调用及执行顺序不太理解
本帖最后由 Rayc 于 2019-6-17 21:37 编辑

在原子哥UCOSIII使用信号量访问共享资源区的程序中,创建的信号量默认为1。我理解的运行顺序是这样的:
首先执行task1,串口输出“任务1:”,再运行到delay_ms(300)时会引起任务调度,这时候切换到task2,串口输出“任务2:”,但是task2中的OSSemPend()信号量为0导致阻塞,task2被挂起, 继续切回到task1,串口输出“First task Running!”,task1发送信号量后,切换到task2。以此类推。。。。
因此串口输出执行结果如下:

任务1:
任务2:
First task Running!
任务1:
Second task Running!


但实际的执行结果如下图:
(, 下载次数: 7)