Mit "kooperativ" habe ich sehr gute Erfahrungen gemacht, selbst auf 8-Bit MCUs.
Mit etwas Disziplin funktioniert das bei moderater Anferorderung and RTOS sehr gut,
und kann sogar in der realen Welt Echtzeitstuerungen übernehmen.
Größere Aufgaben in Teil-Blöcke zerlegen.
Die grobe Überlegung dahinter:
Wenn man eine Haupt-Schleife mit ca. 1 kHZ durchfahren kann, ohne irgendwo länger zu blockieren,
dann reicht das für 99.5% der Fälle im realen Leben aus.
Selbst wenn die 1 kHz nur mit +/- 20% erreicht werden.
Weil die reale Welt da draussen eben nicht so schnell durchläuft, Sensoren nicht so schnell liefern und Aktoren nicht so schnell schalten, ...