Moin,
ich sehe - natürlich - alles anders

Richtig ist: Kooperatives Multitasking verlangt einen Hauch mehr Planung und Hirnschmalz des Programmierers. Aber nicht allzuviel, man programmiert - wie im obigen Beispiel zu sehen - einfach
anders. Alles eine Frage der Gewohnheiten / Erfahrungen.
Falsch ist allerdings, dass kooperatives Multitasking nicht echtzeitfähig wäre (Seit wann ist z.B. Windows - das präemptives Multitasking verwendet - echtzeitfähig?)
Man muss lediglich darauf achten, dass ein Task eine bestimmte Maximalzeit nicht überschreitet - oder dass bei einem zeitintensiven Task (z.B. irgendwelche komplizierten Berechnungen) immer wieder mal eine "Pause" eingelegt wird. Sogar bei rekursiven Berechnungsalgorithmen kann man über geeignete Maßnahmen (einem einfachen Funktionsaufruf....) sicherstellen, dass zeitkritische Dinge rechtzeitig erledigt werden. Komplexe Algorithmen lassen sich über eine State-Machine in Häppchen zerlegen.
Im Gegenteil sehe ich beim kooperativen Multitasking den Vorteil, dass Tasks, die gerade nichts zu tun haben, sich schnellstmöglich selbst beenden zugunsten von Tasks, die mehr Rechenzeit benötigen. Beim präemptiven Multitasking bekommt der Task seine Zeit zugeteilt - ob er nun wirklich etwas tut oder nur eine Warteschleife abarbeitet.
Wenn man es genauer betrachtet, ähnelt das der Interrupt-Programmierung. Interrupt-Routinen müssen ebenfalls kurz / schnell sein, um den normalen Programmablauf nicht unnötig zu stören. Ebenso müssen kooperative Tasks ausgeführt werden.
Ich möchte hier nicht einen Glaubenskrieg entfachen / weiterführen und keine Grundsatzdiskussion führen, aber aus täglicher Erfahrung weiß ich, was möglich ist - und was nicht. Und es gibt
nichts, das ich nicht auch - mit vertretbarem Aufwand - mit kooperativem Multitasking lösen könnte. Sind wir mal ehrlich - wir planen hier keine Mondlandung, wir lassen Roboter über den Boden fahren - da ist die Komplexität endlich.
Den einzigen Nachteil, den ich gelten lassen möchte: Man muss sich um das Timing selber kümmern und eben wissen, was der Code tut.
Damit das nun nicht ganz OT wird verabschiede ich mich aus diesem Thread und überlasse Ford das letzte Wort
