trivial polling loop
for (;;) {
if (c1) a1;
if (c2) a2;
...
}
→ worst-case latency: sum of all actions
higher-frequency input/condition 'c1'
for (;;) {
if (c1) a1;
if (c2) a2;
if (c1) a1;
if (c3) a3;
...
}
→ worst-case latency: maximum of all actions
latency still too high? break up action into parts
for (;;) {
if (c1) a1;
if (c2) { a2.1; half-done = TRUE; }
if (c1) a1;
if (half-done) { a2.2; half-done = FALSE; }
...
}
→ quicky gets complicated and no runtime flexibility
A0 simple scenario: Ch2 (train) important, Ch1 faster
void kmain() {
initialize(); // includes starting the first user task
for (;;) {
currtask = schedule();
request = activate(currtask);
handle(request);
}
}