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 

Parallelität mit nur einer Datenbankverbindung



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!

08.04.2011, 08:08
Beitrag #1

Cluster5020 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Mar 2011

10.0 @32bit
2011
EN


Oesterreich
Parallelität mit nur einer Datenbankverbindung
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.
   
(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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.04.2011, 08:53
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallelität mit nur einer Datenbankverbindung
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...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.04.2011, 14:17
Beitrag #3

Cluster5020 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Mar 2011

10.0 @32bit
2011
EN


Oesterreich
RE: Parallelität mit nur einer Datenbankverbindung
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2011, 08:05
Beitrag #4

Cluster5020 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Mar 2011

10.0 @32bit
2011
EN


Oesterreich
RE: Parallelität mit nur einer Datenbankverbindung
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"):
   

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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: