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.