|
Простейшая корпоративняя ОС - Супер loop:
main()
{
while(1)
{
task(1);
task(2);
...
task(n);
}
Недостаток - если одной задаче нужно ждать какого-то события, другие задачи не смогут выполняться.
Модифицированный вариант:
static int taskFlags;
void mainLoop()
{
while(1)
{
if (taskFlags & 1)
{
taskFlags |=1;
task(1);
taskflags&=(~1);
}
if (taskFlags & 2)
{
taskFlags |=3;
task(2);
taskflags&=(~2);
}
}
}
main()
{ init();
mainLoop();
}
Если задача должна ждать какого-либо события - она в цикле ожидания вызывает mainLoop, давая возможность выполняться остальным задачам
E-mail: info@telesys.ru