|
каким образом можно использовать один стек для нескольких задач:
работа задачи 1:
task1()
{
for(;;)
{
f1();
f2();
}
}f2()
{
OS_Yield(...); // переход на задачу 2
}
Работа задачи 2:
task2()
{
for(;;)
{
f1();
f3();
}
}f3()
{
f4();
}
f4()
{
OS_Yield(...); // переход на задачу 2
}
Что получится в стеке?
Задача 1 загнав в стек при вызове f2 адрес возврата в task1, переключается на задачу 2. задача 2, думая что в стеке адрес возврата из f4 возвращается в task1 (а нужно было в f3)...
так каким образом получается один стек для всех задач?
E-mail: info@telesys.ru