Instanzen von dll's möglich??

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HarryPython
User
Beiträge: 60
Registriert: Freitag 8. Juni 2007, 07:39

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
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.
HarryPython
User
Beiträge: 60
Registriert: Freitag 8. Juni 2007, 07:39

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
Antworten