RE: Resourcen schonende Kommunikation
Hallo LV-New,
man kann Queues auch mit Namen anlegen.
Und wenn man weiß, z.B. per ConfigFile oder typdefiniertem Enum, welche Consumer zu erwarten sind, kann man für jeden Consumer eine Queue anlegen.
Jeder Consumer kennt seinen eigenen Namen und kann so auch seine Queue lesen.
Und um zu verhindern, dass die Queues den Speicher vollmüllen, kann man sie beim Erstellen auch gleich auf eine sinnvolle Länge begrenzen. (Man verwendet dann ein LossyEnqueue…)
Alles zusammen:
Man legt eine überschaubare Anzahl von benannten Queues an, die man natürlich zum Ende des Programms auch alle wieder löscht. Und jeder Consumer liest aus seiner längenbeschränkten Queue.
Klappt für "normale" Datenübertragung (d.h. keine Anforderungen an große Datenpuffer und sehr hohe Datenraten) sehr gut! Ich nutze das, um in einer Prüfstandssoftware mit einer unbekannten (aber über ein Enum definierten maximalen) Anzahl anzusteuernder Geräte Stellbefehle an alle Geräte zu verteilen. Jedes Gerät liest aus seiner Queue - und wenn der Gerätetreiber mangels Hardware nichts liest, stört das aufgrund der Längenbeschränkung der Queues auch nicht…
|