На днях видел код, который по сути делает так на спец. задании "Task" + Sleep + interrupt. Плюсовый код выглядет так:
struct MyTask: Task {
void run() override {
while(true) {
// do things...
sleep(1);
}
}
}
ну и работает это на 1 проце. Подозреваю, что дается просто interrupt в sleep, а дальше запоминается стек, и переключается на другой таск... и так на N тасков на 1 проце.