LabVIEWForum.de
Kommunikation von parallelen Schleifen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Kommunikation von parallelen Schleifen (/Thread-Kommunikation-von-parallelen-Schleifen)



Kommunikation von parallelen Schleifen - Oskimo - 21.07.2010 14:29

Hallo zusammen,

Ich habe 2 parallele Schleifen und möchte nun zwischen den beiden Daten austauschen. Dabei möchte ich, dass beide Schleifen etwas senden und empfangen können. Ich habe da nun 2 Queues verwendet: Die eine Schleife liest das Queue, in das die andere Schleife hineinschreibt. Ich finde aber diese Lösung nicht sonderlich elegant, da ich, wenn ich jetzt mehr parallisieren wollte, noch mehr Queues brauchen würde.
Die Beispiele die ich bisher gefunden habe, haben sich nur damit beschäftigt, dass eine Schleife der Sender war und die andere der Empfänger.
Jetzt ist meine Frage, wie löst man so etwas standardmäßig? Sind Queues das richtige?


Kommunikation von parallelen Schleifen - eg - 21.07.2010 14:41

Zitat:Ich finde aber diese Lösung nicht sonderlich elegant, da ich, wenn ich jetzt mehr parallisieren wollte, noch mehr Queues brauchen würde.
Ja, du brauchst pro Schleife eine Queue, was stört dich daran?


Kommunikation von parallelen Schleifen - Lucki - 21.07.2010 14:51

Ja, unbedingt. Bei der klassischen Erzeuger/Verbraucher-Struktur sind die Verhälnisse bei der Synchronisation klar: Wenn die Queue nicht voll ist, gibt die Sendschleife den Maximaltakt für die Empfangsschleife vor. Wenn die Queue voll ist, betimmt die Empfangsschleife den Takt für die Sendeschleife.
Bei Queues in zwei Richtungen sollte man eine Synchronisation abschalten, also z.B indem man den Timeout beim Empfang auf Null setzt. Da aber die Syncronisation durch eine Queue bereits gegeben ist, könnte man sogar darüber nachdenken, ob man die - oft nur marginale - Botschaft in der Gegenrichtung schlicht mit eine Lokalen Variablen übermittelt.

Für unterschiedliche Messages in einer Richtung würde ich mehrere Queues nur im äußersten Notfall verwenden. Das Übliche ist die Konvertierung unterschiedlicher Botschaften in ein einheitliches Format, Z.B Textformat mit Adresse, beides zusammen in einem Cluster.


Kommunikation von parallelen Schleifen - eg - 21.07.2010 14:55

' schrieb:Bei Queues in zwei Richtungen sollte man eine Synchronisation abschalten, also z.B indem man den Timeout beim Empfang auf Null setzt.

' schrieb:Für unterschiedliche Messages in einer Richtung würde ich mehrere Queues nur im äußersten Notfall verwenden.


Warum?


Kommunikation von parallelen Schleifen - Oskimo - 21.07.2010 15:53

Danke erstmal soweit.
Ich war mir einfach nicht sicher, ob das die beste Lösung in diesem Fall ist. Es hätte ja sein können, dass es noch etwas viel einfacheres gibt. Ich habe mich noch nicht so viel mit der Parallelisierung in LabVIEW beschäftigt.