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 Some task may be 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(); } }