11.10.2011, 09:10
Hallo,
ich versuche grade, mittels des Producer-Consumer-Konzeptes ein Programm zusammenzustellen.
Leider funktionieren die Queues nicht ganz wie erwartet: producerseitig würde ich gerne dem Consumer eine Art EOF kommunizieren, aber so, daß dieser alle Daten bekommt.
Wenn aber, wie in den Beispielen, direkt nach Beendigung des Producers die Queue geschlossen wird und die noch in der Queue verbliebenen Elemente dem Producer beim Schließen zurückgegeben werden, ist das nicht ganz mein Ziel, weil der Consumer davon ja nichts mitbekommt.
Aus diesem Grund habe ich zwischen Ende der Producer-Schleife und Schließen der Queue eine Warteschleife eingefügt, die wartet, bis der Consumer die Queue abgearbeitet hat und dann erst die Queue schließt. Nun kommt mir das aber nicht ganz sauber vor - oder liege ich da falsch?
Ein Bild sagt mehr als 1000 Worte, daher habe ich mein Test-VI mal angehängt.
Der Producer schiebt im 50-ms-Abstand 40 Werte in die Queue, der Consumer holt sie im 150-ms-Abstand ab und zeigt sie nacheinander an. Ohne genannte Schleife kommen die verbliebenen Werte beim Schließen heraus (klar), mit der Warteschleife läuft es wie gewünscht.
Nun meine Frage: Gibt es eine bessere Möglichkeit? Wie würdet ihr da herangehen?[attachment=36415]
ich versuche grade, mittels des Producer-Consumer-Konzeptes ein Programm zusammenzustellen.
Leider funktionieren die Queues nicht ganz wie erwartet: producerseitig würde ich gerne dem Consumer eine Art EOF kommunizieren, aber so, daß dieser alle Daten bekommt.
Wenn aber, wie in den Beispielen, direkt nach Beendigung des Producers die Queue geschlossen wird und die noch in der Queue verbliebenen Elemente dem Producer beim Schließen zurückgegeben werden, ist das nicht ganz mein Ziel, weil der Consumer davon ja nichts mitbekommt.
Aus diesem Grund habe ich zwischen Ende der Producer-Schleife und Schließen der Queue eine Warteschleife eingefügt, die wartet, bis der Consumer die Queue abgearbeitet hat und dann erst die Queue schließt. Nun kommt mir das aber nicht ganz sauber vor - oder liege ich da falsch?
Ein Bild sagt mehr als 1000 Worte, daher habe ich mein Test-VI mal angehängt.
Der Producer schiebt im 50-ms-Abstand 40 Werte in die Queue, der Consumer holt sie im 150-ms-Abstand ab und zeigt sie nacheinander an. Ohne genannte Schleife kommen die verbliebenen Werte beim Schließen heraus (klar), mit der Warteschleife läuft es wie gewünscht.
Nun meine Frage: Gibt es eine bessere Möglichkeit? Wie würdet ihr da herangehen?[attachment=36415]