|
без RTOS:
main()
{
while(1) // пара ассемблерных инструкций
{
Thread1(); // одна ассемблерная инструкция
Thread2(); // одна ассемблерная инструкция
Thread3(); // одна ассемблерная инструкция
}
}или
RTOS +
main()
{
InitRTOS();
...
}
Thread1()
{
X1();
SwitchRTOS();
X2();
}и т.д.
где же экономия? куча КБ RTOS'а ради того чтобы не разбивать Thread1 на 2 самостоятельных участка
или 5 асмовых инструкций?все эти идеи про кооперативную RTOS - это от лени хорошо подумать и сделать Thread1 так чтобы его можно было вызвать два раза (по разу на каждый кусок кода X1 и X2) или выделить X1 и X2 в отдельные thread'ы... причем вся эта лень выливается в лишние КБ памяти, необходимые для RTOS...
ну а если Thread выглядит так:
Thread()
{
while(1);
X1();
SwitchRTOS();
}то это уже полная лажа, т.к. этот пример без особых усилий заменяется самым верхним примером без всяких RTOS'ов (в качестве Thread1 выступать будет X1 и т.д.)
E-mail: info@telesys.ru