No, not beautiful at all This code prevents generic inspection of process status Process status is in local variables It requires full context-switch support Multiple stacks Saving and restoring all registers ... even if we implement no preemption Scheduler structures are opaque Init time is unclean A task may be still initializing while other tasks are already running void random_task(some_arg) { init_this(); init_that; while (1) { work_on_this(); work_on_that; os_wait_next_period(); } }