论坛元老
- 积分
- 5233
- 金钱
- 5233
- 注册时间
- 2015-11-5
- 在线时间
- 678 小时
|
发表于 2016-3-15 16:14:45
|
显示全部楼层
我的理解:
第一次出错的原因:首先任务1串口打印“任务1”,然后任务1获得了信号量,之后delay300毫秒切换到任务2,所以串口打印出“任务2”,任务2请求信号量,但是此时信号量没被任务1释放,所以一直等待,等任务1的300ms延时结束后,回到任务1,串口打印出"First task Running!",之后任务1释放信号量进入1秒延时,任务2获得信号量,拷贝了数据就进入300ms延时,此时任务1还在1s延时,所以不会切换到任务1,300ms过后,任务2继续运行,打印"Second task Running!"
之后又正常的原因:继续上面,任务2释放信号量,然后开始1s延时,延时700ms时任务1的延时时间到了,任务1打印“任务1”,任务1获得信号量拷贝数据,延时300ms后,任务1和任务2同时就绪,任务1的优先级高,先运行任务1,串口打印"First task Running!"并释放信号量,然后1s延时,运行任务2,任务2打印“任务2”,任务2获得信号量,延时300ms,此时任务1还在等待,任务2继续运行打印"Second task Running!"。然后就循环下去了 |
|