Threads versus Dll
-
Hi,
würde gerne wissen, was vorteilhafter ist:
Folgende Sachlage:
Habe den primärthread , der 2 Workerthreads aufruft. Beide workerthreads aber
rufen eine Funktion auf (jeweils aber mit unterschiedlichen Paramtern)a)Bietet sich hier eine Dll für die Funktion an , an denen sich die Threads vergehen sollen oder
b) sollte man die Funktion selbst als Threadfunktion deklarieren und bei jedem aufruf der Funktion durch die Workerthreads ensteht somit ein neuer Funktionsthread. Ich denke aber, dass die Funktionsthreads dann noch mit den workerthreads synchronisieren werden müssten.Ich meine also Version a, bin mir aber nicht sicher.
Welche Version ist arbeitsspeicherentlastender, sinnvoller und weniger aufwendiger ?
Danke sehr
-
Threads haben mit DLL überhaupt nicht zu tun.
Ob Du jetzt eine Funktion in einer DLL verpackst oder die Funktion direkt in dein Programm macht für den Speicher keinen Unterschied.
Ein DLL hat die Funktion Code wiederverwendbar zu machen und auch leicht Fehlerhaften Code auszutauschen.
Solltest Du mehrere verschiedene Programm haben welche die gleichen Funktionen verwenden dann wird die DLL nur einmal in den Speicher geladen und jeder holt sich einfach gesagt die Funktion von dort solange auf die DLL aus dem gleichen Ordner geladen wird.
Die gleiche DLL in verschiedenen Ordner lädt jedoch die DLL 2 Mal.Wenn du nur 2 Funktionen hast bist du besser dran diese Funktionen in dein Programm zu schreiben da du dir dann das laden und freigeben der DLL sparst den dies kostet Zeit. (Auch Millisekunden ist Zeit). Du sparst dir damit auch Festplattenzugriff.
DLL`s haben aber den Vorteil das man auf einfache weise Daten zwischen 2 eigenständigen Programm austauschen kann (Sharedmemory) ohne Sockets, etc.
-
Hi Tom,
danke erstmal für deine Antwort.
also macht eine dll nur dann sinn, wenn man aus mehreren verschiedenen Anwendungen auf Funktionen zugreift, aber nicht wenn man aus mehereren Threads innerhalb einer Anwendung auf die Funktionen zugreift.
Im zweiten Fall wäre also die Unterbringung der funktionen in die Anwendung selbst angebrachter .
Sehe ich das richtig ?
-
Das musst du selbst entscheiden.
Ich kenne deine Anforderungen ja nicht aber so wie ich das bei dir sehe ist es besser du gibst die 2 Funktionen direkt in die Anwendung.
-
Hi Tom,
die Anforderung sieht so aus, dass ich 4 com-interfaces habe.diese führen immer dieselbe readfunktion aus. Ausserdem sollen diese 4 Threads auch seperate nachrichten an ein Hauptfenster schicken, damit das Hauptfenster das readergebnis eines jeden Threads anzeigt.
Habe durch Trace schon gesehen, das die Anwendung die 4 Readthreas schon mal ausliest.
Jetzt müssten sich nur noch die Threads aufeienader abstimmen nachdem sie jeweils eine nachricht gelesen und an das Hauptfenster geschickt haben.habe da an synchronisationsobjekte gedacht, gibt es da vielleicht noch elegantere Möglichkeiten ?