Ich will lernen
Ich würde mal bahaupten ein Gemisch aus Producer Consumer und State Machine ist fast immer die beste Lösung für solche aufgaben. Im vom Jens vorgeschlagenen und von mir gemachten Terminal sieht man ganz gut wie es funktioniert. Normalerweise trenne ich meine Programme in unabhängiglaufende parallele Loops, die ich Module nenne. Die Kommunikation zwischen den Modulen läuft normalerweise über Queues, Notifiers oder User Events. Ich bevorzuge Queues, bin aber gezwungen manchmal User Events zu benutzen. Notifier versuche ich zu vermeide, weil damit Datensätze, die ich von einem Modul zum anderen übertragen möchte, verloren werden können im Falle, wenn der Empfänger mit etwas anderem ausser Empfangen beschäftigt ist. Manchmal ist es aber sinnvoll einen Notifier zu benutzen und zwar wenn man nur das letzte aktuelle Datum (ich meine hier Datensatz) empfangen möchte und alle vorherigen beabsichtigt verwerfen will.
In einem Datensatz wird normalerweise ein in ein binäres String geflattenes Cluster übergeben. Dieser Cluster besteht normalerweise aus einem Befehl und Nutzdaten. Abhängig davon um welchen Befehl es sich handelt, mach das Empfangsmodul das eine oder das andere mit den Nutzdaten, die in diesem Paket enthalten sind.
Gruß
|