Sun Dec 22 14:14:14 CET 2019
How everything is related
When you don't do pre-emptive scheduling:
- The core idea is definitely state machines and transition functions.
- Partial CPS-transformation then links tasks to state machines by
introducing pre-emption points.
- Representation of the continuations makes the bridge to "monolythic"
state machines. I.e. a sum type of the different state context
I really don't like pre-emptive multitasking, but Eric comes to the
conclusion that it is necessary, and that many priority levels are
It's probably ok to combine the two: use the static state machine
tasks with a scheduler.
Actually the ideas are really orthogonal. My point is really about
the representation of the tasks, not the scheduling.
One remark: I found it easier to write state machines in a language
like Erlang, with the availability of more appropriate types for
representing state, and the ability to pattern-match. In raw C this
is a real pain.