Я делаю это (строго говоря, кооперативная многозадачность с фиксированной глубиной стека вызовов).
Это работает, но компилятор Hitec-c работает против меня - он повторно использует ячейки памяти для временных переменных из функций, которые, по его мнению, никогда не запускаются одновременно. В основном потоки портят друг друга. Если я найду способ обойти это, я дополню этот ответ примером кода.