Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Mehrere Prozesse in einer "Anwendung" (https://www.delphipraxis.net/192543-mehrere-prozesse-einer-anwendung.html)

himitsu 29. Apr 2017 01:29

AW: Mehrere Prozesse in einer "Anwendung"
 
Zitat:

Zitat von Mavarik (Beitrag 1369415)
Wie himitsu schon gesagt hat... Ne DLL - jede DLL hat ihren eigenen VCL-Thread also eigentlich "einfach" nur die ganze Anwendung in eine DLL packen und ein Hauptprogramm, dass die entsprechenden DLL lädt...

Eine DLL hat keine Threads.
Grundsätzlich laufen alle aufgerufenen exportierten Prozeduren in dem Tread, über welchen sie aufgerufen wurden.
Aber ja, DLLs haben erstmal ihre eigenen gobalen VCL-/RTL-Variablen, welche getrennt von den Variablen der EXE sind.
Außer bei BPLs und DLLs, wo man es manuell verknüpft hat, dazu dann noch der eigene Speichermanager, außer bei Vewendung eines Shared MMs, und die eigene RTTI.

Vorallem die RTTI sind dann hinderlich, wenn man z.B. die VCL der DLL im selben Thread des VCL-Threads der EXE laufen lässt.


Darum gibt es auch die wenigsten Probleme, wenn man alles komplett trennt und das Ganze wirklich in einem fremden Prozess laufen lässt.
Im selben Prozess, auch wenn es in eine DLL ausgelagert wurde, bleibt denoch der Arbeitsspeicher gemeinsam und Probleme können sich auf den Hauptthread auswirken.

Mavarik 29. Apr 2017 13:36

AW: Mehrere Prozesse in einer "Anwendung"
 
Zitat:

Zitat von himitsu (Beitrag 1369422)
Eine DLL hat keine Threads.

OK Kern...

Luckie 29. Apr 2017 13:51

AW: Mehrere Prozesse in einer "Anwendung"
 
Eine DLL kann keine Threads haben, weil sie nie zu einem Prozess selbst werden kann, da sie nicht "ausführbar" ist. Ein Prozess (mit Threads) kann nur die exportierten Funktionen laden und ausführen in den eigenen Threads. Eine exportierte DLL Funktion kann zwar einen Thread erzeugen, dieser läuft dann aber im Kontext des Prozesses, der diese exportierte Funktion aufgerufen hat.

*Schlaubischkumpf jetzt müüüüde. Schlaubischlumpf muss ruhen. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz