' schrieb:Die Hast ja in allem Recht, nur bleibe ich dabei, Queues nur dann zu verwenden, wenn es sinnvoll ist, und ansonsten Melder.
Ich mache es andersrum.
' schrieb:Die weitaus meisten Anwendungen sind Größenordnungen davon entfernt, zeitkritisch zu sein, das Warten auf neue Daten ist oft geradezu unendlich gegenüber der anschließenden Verarbeitungszeit. Bei solchen Anwendungen, bzw. ohne auf die Anwendung näher hinzuschauen, wegen der "Gefahr des Datenverlustes" immer wieder stereotyp vor Meldern zu warnen läuft dann wirklich auf "Klugscheiß" hinaus.
Gerade bei MSR ist es nicht so. Einfaches Beispiel ist Speichern der Daten auf die Festplatte. Wenn die Daten z.B. mit 100 Hz kommen und die Festplatte gerade beschäftigt ist, kann es zu einer Verzögerung kommen. Da hast du schon den Datenverlust. Ausserdem kann man aus der Queue alle Elemente auf ein Mal auslesen (mit Flush Queue).
' schrieb:Im Übrigen hat ja man auch bei Meldern die Möglichkeit ein Fehlmeldung bei Datenverlust zu generieren, und andererseits gibt es bei Queues die Möglichkeit hat, bei Datenüberlauf keinen Fehler zu generieren.
Wenn du mit einem Timeout die Daten in die übergelaufene Queue reinschreibst, bekommst du die Fehlermeldung. Ohne gesetzten Timeout wird der Sender solange warten bis Platz in der Queue frei ist.
' schrieb:Und wahr ist doch auch, daß nur früher die Melder zu recht so hießen, denn sie dienten nur zur Meldung über einen String, konnten aber selbst - außer in diesem String - keine Daten transportieren. Heute hat man sie aufgebohrt, eigentlich müßten sie umbenannt werden, denn sie leisten jetzt das Gleiche wie eine Queue mit der Länge 1. (Ja, ich weiß, das gibt es nicht, eine Queue sollte wenigsten 2 Elemente lang sein, aber zur Veranschaulichung was ein Melder leistet kann man es schon mal so sagen)
Alle meine Queues und Melder sind vom Typ String. Mit Flatten und Unflatten werden die Daten gepackt und entpackt. Vor den Nutzdaten schreibe ich noch den dazugehörigen Befehl, damit weiß der Empfänger, was er mit Daten machen muss und wie er diese entpacken soll.
eg