Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
so habe grad nochmal versucht ein Erzeuger Verbraucher System zu erstellen.
Die obere Schleife ist wieder der Erzeuger. Sie erzeugt alle 50ms Daten.
Diesmal kommen die Daten von der Laufvariablen i der Schleife.
Diese Daten lege ich in die Queue rein.
Die untere Schleife ist der Verbraucher. Sie entimmt alle 5000 ms Daten
aus der Queue und zeichnet sie in ein Diagramm.
Die Queue hat eine Beschränkung von 10 Elementen.
Ich kann mir die 10 Elemente die im Puffer sind im Array auf dem Frontpanel anschauen.
Mich wundert es, dass keine Daten verloren gehen. Es wird eine saubere gerade
Linie im Diagramm gezeichnet. Das versteh ich aber nicht.
Die Erzeugerschleife wird alle 50ms ausgeführt. Dabei versucht sie bei jeder Ausführung
einen neuen Wert in den Puffer zu legen. Wenn bereits 10 Werte drinne sind, und das
dürfte nach 500 ms der Fall sein, dann wird die Erzeugerschleife zwar weiterhin alle 50ms
ausgeführt, aber sie legt keine neuen Daten mehr in den Puffer, da dieser voll ist.
Nach 500 ms müssten die Werte {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} drin sein.
Wenn nun die Verbraucherschleife nach 5000ms den ersten Wert herausholt, dann
könnte die Erzeugerschleife im nächsten Schleifendurchlauf einen neuen Wert
in den Puffer legen. Die Laufvariable müsste zu diesem Zeitpunkt ungefähr den Wert 100 haben.
Somit müsten in den Puffer dieser Wert hineingelegt werden.
Also müsste die Queue nun so aussehen {2, 3, 4, 5, 6, 7, 8, 9, 10, 100}
Das bedeutet das im Diagramm irgendwann ein plötzlicher Sprung vom Wert 10 auf den Wert 100 zu sehen sein sollte.
Dem ist aber nicht so. Warum? Wo liegt mein Denkfehler?