标题:
时间片轮询法中,如何处理同一时间不同任务
[打印本页]
作者:
cmx86081212
时间:
2019-4-5 19:01
标题:
时间片轮询法中,如何处理同一时间不同任务
Task_Struct tasks[] =
{
{0,200,200,task1}, //用各个任务的函数名初始化
{0,60,60,task2},
{0,100,100,task3},
{0,10,10,task4}
};
比如在此任务数组中有4个任务,但是每个任务的时间片是不同的。200ms/60ms/100ms/10ms
所以能在4个不同时间片执行相应的任务。
我的问题是在同一个时间片如何处理不同任务?
比如定时60秒的时间片,60秒到要处理显示更新以及倒计时这两个任务该如何解决?
(1)Task_Struct tasks[] =
{
{0,60,60,task1},//任务一显示更新
{0,60,60,task2},//任务二倒计时
}
(2)Task_Struct tasks[] =
{
{0,60,60,task1}
}
void task1()
{
work1();//任务一显示更新
work2();//任务二倒计时
}
这两种方法行不行的通?或者有没更好的方法能够解决?
注:关于时间片轮解释如下
作者:
cjp88811283
时间:
2020-12-26 13:52
需要注意的是,这种方法的前提是执行的 每个任务都是短小精悍的,要不然一个任务执行的时间过长,大于其它任务设置的时间片值,那其它任务就无法保证按它预设的时间片来执行。
尤其需要注意任务中延时的使用,可能会产生不可预料的结果。如果任务内部需要延时的时候,或者说单个任务过长,需要保存任务执行到一半的状态,建议使用状态机切割长任务。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1