LabVIEWForum.de
Parallelität mit nur einer Datenbankverbindung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Parallelität mit nur einer Datenbankverbindung (/Thread-Parallelitaet-mit-nur-einer-Datenbankverbindung)



Parallelität mit nur einer Datenbankverbindung - Cluster5020 - 08.04.2011 08:08

Guten Morgen.

Habe einmal mehr wieder eine Frage an das Form Smile

Und zwar versuche ich eine Parallälität bzw. Multithreating für ein paar zeitunkritischere Prozesse zu erstellen (damit diese den zeitkritischeren mehr Ressourcen lassen).
Dabei soll jedoch nur eine Datenbank Verbindung auf einmal aufgebaut werden, da man bei gewissen Datenbanksystem sonst mehr Lizenzgebühren entrichten darf Wink

Ich habe hier schon einmal einen Versuch gewagt, wenn es rennt, dann rennt es.
[attachment=33177]
(Die UND-Gatter sind eigentlich redundant, aber finde es so übersichtlicher)


Gibts da Probleme mit meinem Design, bzw. gibt es eine sauberere Lösung?

Vielen Dank.

LG Cluster


RE: Parallelität mit nur einer Datenbankverbindung - GerdW - 08.04.2011 08:53

Hallo Cluster,

Zitat:Gibts da Probleme mit meinem Design, bzw. gibt es eine sauberere Lösung?
Problem: es können immer noch parallel Zugriffe auf die DB initiiert werden, da die 3 Schleifen unabhängig voneinander laufen...
Mögliche Lösung: ProducerConsumer-Schema: den DB-Zugriff in eine extra Schleife, die "Befehle" (= gewünschter DB-Zugriff) erhält und den Wert aus der DB holt. Deine 3 bisherigen Schleifen werden zu "Befehls"-Producern...

Wozu überhaupt die UNDs mit dem nachfolgenden Case? Die Schleifen stoppen nur bei TRUE: du erhälst also immer ein TRUE nach den UNDs! Also sind die UNDs und der Case unnötig (=RubeGoldberg), der Dataflow besorgt die zeitliche Koordinierung...


RE: Parallelität mit nur einer Datenbankverbindung - Cluster5020 - 08.04.2011 14:17

Vielen Dank, du hast recht es ist wirklich klüger sich mit ein paar Queues abzusichern.

Das mit den UND-Gattern stimmt, für mich ist es nur lesbarer, wenn ich die Bedingung so darstelle. Labview-logisch hat es freilich null Sinn, da er ja sowieso auf alle Eingänge wartet ^^

Ich habe dir wieder einmal zu Danken Gernd Smile


RE: Parallelität mit nur einer Datenbankverbindung - Cluster5020 - 14.04.2011 08:05

So, hab bereits eine Producer Consumer erstellt. Allerdings habe ich 2 Queues benötigt, da ich bei select abfragen auch ein Result zurückgeben möchte.

Ich habe hier einmal ein Beispiel erstellt (hoffe es ist verständlich, ist eine Tastatur mit nur einer Taste "A"):
[attachment=33299]

Es wird in die Queue "a" geschrieben und auf die Queue "b" gewartet.
Später wird es den oberen Block allerdings öfter geben (sonst würde der Aufbau auch keinen Sinn machen). Kann es dann nicht vorkommen, dass wenn 2 gleichzeitig anfangen zu senden, die einer der beiden Producer das falsche Feedback zurück bekommt?
Wenn ja, wie könnte ich das am Besten abfangen?

Vielen Dank.

LG Cluster