|
请教各位高手关于VxWorks中的多任务调度问题
[复制链接]
当多任务以抢占式进行调度时,如果高优先级的任务执行完一次后,进行时间延时后任务会进行调度么?就是比如下面程序:
TaskHigh()
{
int i,j,temp=0;
while(1)
{
for(i=0;i<1000;i++)
{
for(j=0;j<100;j++)
{
printf("temp=%d\n",temp);
}
delay();
}
delay();
}
}
TaskLow()
{
int i,j,temp=0;
while(1)
{
for(i=0;i<1000;i++)
{
for(j=0;j<100;j++)
{
printf("temp=%d\n",temp);
}
delay();
}
delay();
}
}
当进行抢占式调度时,把TaskHigh()任务的所有循环打印完后,再去打印TaskLow()任务的循环呢?但是按照我的理解因为进行在最里面循环执行完后,有延时,所以进行了任务调度,会去执行TaskLow()任务,然后等到TaskLow()任务遇到延时,再过来执行TaskHigh()任务.
但是我看到资料上说的是先把TaskHigh()任务的所有循环打印完成,然后再去打印TaskLow()任务的循环.为什么是这样的呢?难道进行抢占式调度,即使是进行延时操作,也不会进行任务调度的么?
各位高手请多多指教了,.谢谢
|
|