INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Bei 2 parallelen Schleifen Daten übergeben



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!

02.03.2011, 11:22
Beitrag #14

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
(02.03.2011 09:24 )tetef schrieb:  wird die Bearbeitungseit unterschiedlich sein. D.h. bis eine Schleife die Daten bearbeitet und in die Bus(Queue) zur Verfuegung steht, sieht immer kritisch. Eine Schleifen braucht laenger, die andere kurzer.
So ist es.
Und da man um diesen Sachverhalt weis, kann man einen entsprechenden Algorithmus programmieren.

Zitat:Bei Queues, wenn die Daten nicht rechtzeitig geholt sind, dann werden sie verloren gehen?
Nein. Daten werden nicht verloren gehen. Dafür sorgt ja der Algorithmus.

Queues kann man nämlich hervorragend dafür einsetzen, um Laufzeitunterschiede in den einzelnen Modulen auszugleichen!

Eine Queue kann nicht nur einen einzigen Datensatz enthalten, sondern theoretisch beliebig viele. Es gibt nur ein einziges Kriterium: Über einen "großen" Zeitraum gesehen, muss das Auslesen schneller gehen als das Hineinschreiben.

Ein Beispiel:
Eine Queue kann 1000 Datensätze beinhalten. Die Erzeuger(Producer)-While-Schleife dauert 10ms. D.h. Daten werden mit 10ms in die Queue geschrieben. Pro Sekunde sind das also 100 Datensätze. Die Verbraucher(Consumer)-While-Schleife dauert 1 Sekunde. Diese Sekunde setzt sich aber aus mehreren Programmteilen zusammen: Queue auslesen, Daten verarbeiten, Daten anzeigen(Graph) oder speichern (Excel etc) oder sonst. Der Großteil der Sekunde, nämlich z.B. 750ms wird für Excel-Speichern verbraucht. Wichtig ist nun folgendes: Innerhalb eines Schleifendurchlaufes der Verbraucher-Schleife muss(!) die komplette Queue, also alle 100 Datensätze, ausgelesen werden. Nach dem Auslesen ist die Queue dann für (maximal) 10ms leer(!). Die 100 Datensätze müssen dann in dem einen Schleifendurchlauf weiterverarbeitet werden.

Oft ist es so:
Die Verarbeitung eines Datensatzes dauert z.B. 1ms. Würde man 100 Datensätze einzeln verarbeiten, würde das dann 100ms dauern. Verwendet man nun aber einen geeigneten Algorithmus, nämlich einen, der mit Arrays arbeiten kann, dauert die Verarbeitung der 100 Datensätze (z.B.) nur noch 50ms. Es ergibt sich also ein Zeitvorteil, wenn man mit Absicht die Queue voll laufen lässt und dann den kompletten Queueinhalt am Stück verarbeitet.

Selbstverständlich kann eine Queue auch Daten verlieren. Das tritt aber nur dann ein, wenn das Gesamtkonstrukt aus Datenstruktur und Programmstruktur schlecht gewählt ist. Man muss am Anfang schon eine Berechnung anstellen, welches Gesamtkonstrukt zielführend sein wird.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
RE: Bei 2 parallelen Schleifen Daten übergeben - IchSelbst - 02.03.2011 11:22

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Leeres Array beim Parallelen lesen von mehreren Modulen Dominik_M 6 4.381 09.05.2014 08:00
Letzter Beitrag: GerdW
  Signale von parallelen Schleifen Austauschen xrzr 10 6.374 27.04.2014 09:27
Letzter Beitrag: GerdW
  Variablen zwischen zwei Schleifen übergeben und an bestimmter Stelle Ausführen FelixH 4 6.719 01.09.2012 16:43
Letzter Beitrag: FelixH

Gehe zu: