Seite 1 von 1

Instanzen von dll's möglich??

Verfasst: Mittwoch 23. Januar 2008, 18:47
von HarryPython
Hi

Ich hab eine dll, der ich Werte übergeben kann und die mir daraufhin ein Ergebnis liefert. Da ich das ganze aber schneller haben möchte, würd ich gern mit Hilfe von mehreren Threads der dll immer nur einen Wert übergeben.
Hab mir das so gedacht:

Code: Alles auswählen

threads = []
for wert in werteliste:
    threads.append( threadname(wert) )
    threads[-1].start()


class threadname(threading.Thread):
        def __init__(self, wert)
            self.wert = wert

        def run(self):
             self.dll = windll.LoadLibrary("meine.dll")
             self.lesen = self.dll.meine_Funktion

Wenn ich das ganze mit einem Thread und einer dll mache ist alles schön. Bei mehreren Threads bekomme ich keine Ergebnis mehr zurück. Da ist mir ersteinmal der Grundgedanke gekommen:

Kann man von einer dll überhaupt Instanzen erzeugen??

mfG HP

Verfasst: Mittwoch 23. Januar 2008, 19:01
von BlackJack
Ja und nein. Es ist letztendlich wie bei Python Modulen immer die gleiche DLL. Das ist ja der Sinn von DLLs. Ist halt die Frage ob die "thread safe" programmiert wurde, oder nicht.

Verfasst: Freitag 25. Januar 2008, 15:03
von HarryPython
Hi BlackJack,

hat etwas länger gedauert, bis ich dahinter gekommen bin.

Die dll erstelle ich mit LabView selbst. Und dort ist Standardmäßig eingestellt, dass man die dll nur einmal aufrufen kann.

Unter "VI Einstellungen" -> Kategorie "Ausführung" muss man "Ablaufinvariante Ausführung" anhaken. Dann ist die dll, bzw. die VI Funktion, Thread safe!


Danke Black, "thread safe" war genau das richtige Stichwort das ich brauchte.


mfG
HP