资深版主
- 积分
- 14980
- 金钱
- 14980
- 注册时间
- 2013-11-13
- 在线时间
- 1823 小时
|
发表于 2015-10-18 22:38:56
|
显示全部楼层
关于第九讲的内容,切换一个任务不一定要把这个任务挂起,可以直接进行切换。只要我能获取到一个任务的现场,我就可以切换回去,而延时函数做的那些东西是为了保证延时函数切换任务是的逻辑来的,最终还是要调用任务切换函数OSSched()的,但是我现在不需要延时函数来完成任务切换,所以 我现在 也就不需要理延时函数的那些处理过程。再者,究竟当前哪个任务是就绪好的最高优先级任务也不是延时函数来管理的,是滴答定时器周期性的管理任务就绪表的,如下图,任务切换函数OSSched()会检测当前任务是否是就绪的最高优先级的任务,如果不是就进行切换。
再者,你也可以看一下其他的任务调度点函数(也就是可以引发任务调度的函数,视频里面有说),比如任务创建函数OSTaskCreate(),这个函数最后也会引发任务调度,它所引发的任务调度就是 直接调用任务切换函数OSSched()来完成的,包括其他UCOS源码中的可以 引发任务切换的函数一样,都是通过调用OSSched()来完成的,我们的例程的例10-4直接调用OSSched()来完成任务切换的,你可以分析一下这个实验的代码。
|
|