Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mutithreading
03.04.2012, 21:40
Beitrag: #1
Mutithreading
Hallo Leute,

ich werf mal das Thema Multithreading in die Runde. Mich würde interessieren ob ihr es verwendet und im welchen Bereich.
Selber habe ich bis jetzt alles ohne Multithreading gemacht, jedoch vor kurzem habe ich ein paar Versuche gemacht.
Ich habe zwei Threadobjects gemacht und in einem eine Schleife mit 10ms Intervall und im anderem eine mit 50ms.
In jeder Schleife werden Formeln und TO/FROM STRING Befehle abgearbeitet und eine Funktion einer geladenen DLL ausgeführt.
Nach einiger Zeit kommt ein Schwerwiegender VEE Fehler, bei dem ich nach dem Quitieren nicht mehr auf das VEE File speichern kann und dadiurch gezwungen bin entweder auf eine neue Datei zu speichern oder VEE zu beenden.
Für mich ist wichtig das ein Task im Hintergrund zuverlässig alle 50ms arbeitet. Egal ob ich mit der Maus wo hängenbleibe oder der Programm beim GPIB Datenauslesen kurz hängt.
Wobei ich jetzt nicht weis ob man in einem Threadobject auch normale Objecte haben darf, den bei größeren Berechnungen ist es übersichtlicher Teile in ein Object zu packen und nicht alles auf einem Blatt zu stellen.

Gruß Max
Diese Nachricht in einer Antwort zitieren
04.04.2012, 12:47 (Dieser Beitrag wurde zuletzt bearbeitet: 04.04.2012 16:52 von detlef.)
Beitrag: #2
RE: Mutithreading
Willkommen im Club.
Auch ich probiere seit einiger Zeit mit Multithreading, und musste feststellen, dass dies auf verschiedenen Rechnern unterschiedlich laeuft.
Zuallererst: Benutze die aktuellste VEE VErsion , und IOLIB 16.2.
Ein paar Beispiele sind ja schon hier im Forum.
Wenn ein konkretes Problem besteht, setzt es mal hier rein.


Generell kann man alles in ein ThreadObject packen- ist halt wie ein eigenstaendiges VEE Programm. Man muss da nun besser auf globale und lokale Variablen achten.

Aber es waere schoen, wenn wir hier mal Erfahrungen austauschen koennten.

So setzte ich zum Beipiel in jedem Thread ein globales Flag, das, wenn abgefragt und nicht 0 , das Programm stoppt.
Sonst warte ich mal Ewigkeiten, bis ein Programm zu stoppen ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.04.2012, 20:00
Beitrag: #3
RE: Mutithreading
Das mit dem Flag ist eine gute Idee.
Habe heute versucht in einem ThreadObject dauernd eine UserFunction auszuführen.
Vergeblich, denn anscheinend dürfen in einem ThreadObject keine UserFunctionen oder UserObjects sein.
Wenn diese im "Flow" grad an der Reihe sind und das Programm z.B durch anhalten der Maus gestoppt wird, läuft das ThreadObject auch nicht mehr weiter.
Das Programm "hängt" in der UserFunktion oder im UserObject.
Korrigiert mich bitte wenn ich falsch liege.

Auf meinem VEE Rechner läuft VEE Pro 9.3 und die IOLIB 16.2 ist drauf.
Diese Nachricht in einer Antwort zitieren
08.04.2012, 07:52
Beitrag: #4
RE: Mutithreading
Das kann ich so nicht nachvollziehen. Bitte mal ein Beispiel hier reinsetzen.
Ich habe userfct usw. in menen Threadobjects...
---
noch was : Frohe Ostern ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:




Partnerforen: LabVIEWForum.de| DIAdem-Forum.de| Machine-Vision-Forum.de| goMatlab.de| VEEforum.de