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 

Queues



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!

05.05.2010, 10:02
Beitrag #1

ChristianXX Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Nov 2008

2013
2008
DE

38239
Deutschland
Queues
Hallo,

In meinem Programm laufen zwei Schrittketten parallel ab.
Auf guten Rat dieses Forums habe ich in meinem Programm diverse lokale Variablen durch Queues ersetzt.

Dafür habe ich mir SubVI´s erstellt, welche fürs Einlesen und fürs Auslesen,

habe diese in einem Test-VI hochgeladen

Kann es sein das dadurch meine CPU Auslasteung ca 30 min auf 95% ansteigt?

Nach ein paar Stunden kommt der Abbruch.... Speicher voll.

Vielleicht mache ich etwas grungsetzlich falsch im Umgang mit den Queues.

Es sind so ca 50 veschieden Queues-Namen die ich vergeben habe.

Vielleicht hat ja jemand noch´n heissen Tip.

MfG
Christian

LV Version 9


Angehängte Datei(en)
Sonstige .vi  test___quques.vi (Größe: 15,9 KB / Downloads: 274)

Sonstige .vi  Queues_Ausgang_Boolsch_allgemein__SubVI_.vi (Größe: 7,48 KB / Downloads: 228)

Sonstige .vi  Queues_Ausgang_Integer_allgemein2__SubVI_.vi (Größe: 7,45 KB / Downloads: 198)

Sonstige .vi  Queues_Eingang_Boolsch_allgemein__SubVI_.vi (Größe: 7,12 KB / Downloads: 205)

Sonstige .vi  Queues_Eingang_Integer_allgemein2__SubVI_.vi (Größe: 6,86 KB / Downloads: 214)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2010, 10:33
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Queues
' schrieb:Vielleicht mache ich etwas grungsetzlich falsch im Umgang mit den Queues.
Wird eine Queue-Referenz geholt mittels des VIs "Queue holen" (also das Teil mit dem Queuenamen dran), dann muss diese Queue-Referenz auch wieder gelöscht werden (Beachte: Das Löschen der Queue-Referenz löscht nicht die Queue als solche). Zu jedem "Queue holen" muss es genau ein "Queue löschen" geben.

Wenn man die Queue-Referenz in einem Schieberegister speichert, spart man sich das "Queue holen" - und somit das "Queue löschen".

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
05.05.2010, 11:10
Beitrag #3

ChristianXX Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Nov 2008

2013
2008
DE

38239
Deutschland
Queues
Also auch wenn ich etwas in ein Queues einlese muss ich das Queues danach sofort wieder freigeben?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2010, 11:56
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Queues
' schrieb:Also auch wenn ich etwas in ein Queues einlese muss ich das Queues danach sofort wieder freigeben?
Ja.

Wann immer du das Element "Queue holen" (eigentlich Queue-Referenz holen) verwendest, musst du die Referenz wieder freigeben.

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
05.05.2010, 12:30
Beitrag #5

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Queues
Mögliches Missverständnis?

' schrieb:etwas in ein Queues einlese
...ist doch "Element einfügen"

und...
' schrieb:"Queue holen" (eigentlich Queue-Referenz holen)
...ist doch "Queue anfordern"

Demnach wäre die Antwort Nein und nicht Ja. Pro "Element einfügen" braucht's doch nicht entsprechend ein "Queue freigeben".

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2010, 12:48 (Dieser Beitrag wurde zuletzt bearbeitet: 05.05.2010 12:48 von RoLe.)
Beitrag #6

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
Queues
' schrieb:Zu jedem "Queue holen" muss es genau ein "Queue löschen" geben.
.. oder man macht das "Force Destroy auf True" beim Release Queue.

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2010, 12:59
Beitrag #7

ChristianXX Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Nov 2008

2013
2008
DE

38239
Deutschland
Queues
Also, jedesmal wenn ich ein Queues anfordere, egal ob ich danch etwas einfüge(verlustbehaftet) oder das Element mit der Vorschau auslese, muss ich es danach wieder freigeben?

Werde das mal ändern.

Kann das der Grund für meine CPU-Vollauslastung sein?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2010, 16:15
Beitrag #8

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Queues
' schrieb:Mögliches Missverständnis?
Demnach wäre die Antwort Nein und nicht Ja. Pro "Element einfügen" braucht's doch nicht entsprechend ein "Queue freigeben".
Ich gehe davon aus (Beachte: die Sourcen konnte ich noch nicht lesen), dass die Referenz, die für ein "In Queue einfügen" notwendig ist, durch ein "Queue holen" geholt wird.

' schrieb:Kann das der Grund für meine CPU-Vollauslastung sein?
Jede Referenz, die geöffnet wird, muss geschlossen werden. Wird sie nicht geschlossen, verbleibt sie im Speicher => erst geht die CPU-Auslastung hoch, dann läuft auch noch der Speicher über.

Ich kann doch auch nichts dazu, wenn LV ständig neue Referenzen generiert (Angel_not ). Deswegen lege ich eine einzige in ein Schieberegister in ein FGV und verwende nur die.

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
05.05.2010, 18:47 (Dieser Beitrag wurde zuletzt bearbeitet: 05.05.2010 18:47 von IchSelbst.)
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Queues
Wo immer "Queue anfordern", da auch ein "Queue freigeben". Und zwar genau so, wie es im ersten Bild steht: Ohne beschaltete Eingänge "Eliminieren (f)" und "Erzeugen, wenn nicht gefunden? (T)". Im zweiten Bild hast du ja auch ein Freigeben gemacht.

Was in der Hilfe steht, gilt analog auch für deinen Fall:
Zitat:Wenn die Funktion "Queue anfordern" innerhalb einer Schleife eine Referenz auf eine benannte Queue ausgibt, erzeugt LabVIEW bei jeder Iteration der Schleife eine neue Referenz auf die Queue. Wenn "Queue anfordern" in einer engen Schleife (tight loop) verwendet wird, erhöht sich die Speicherauslastung kontinuierlich, da für jede neue Referenz weitere vier Bytes hinzukommen. Diese Bytes werden automatisch beim Stopp des VIs freigegeben. Bei Applikationen mit langen Ausführungszeiten scheint LabVIEW aber Speicher zu verlieren, da die Auslastung kontinuierlich steigt. Daher sollte nach jeder Iteration in der Schleife die Funktion Queue freigeben aufgerufen werden, damit nicht unnötig viel Speicher belegt wird.


Angehängte Datei(en) Thumbnail(s)
       

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
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Probleme mit Queues und Programmaufbau stefan1312 6 5.446 30.10.2018 17:08
Letzter Beitrag: NoWay
  Drei Queues in einer While-Schleife mit case-Struktur EinVolvic 12 13.194 17.05.2017 20:25
Letzter Beitrag: EinVolvic
  2D Arrays per Queues abfragen Jan S. 3 3.993 16.01.2016 08:56
Letzter Beitrag: Lucki
  Frage zu Message Queues, Queue Cluster mehrfach aufschlüsseln dali4u 8 8.106 11.12.2014 09:07
Letzter Beitrag: Lucki
  Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht dali4u 4 6.184 28.10.2014 11:48
Letzter Beitrag: jg
  Synchronisation mit Queues Masterg4941 9 8.164 25.09.2013 12:24
Letzter Beitrag: GerdW

Gehe zu: