AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Prozesse in einer "Anwendung"

Ein Thema von sh17 · begonnen am 28. Apr 2017 · letzter Beitrag vom 29. Apr 2017
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: Mehrere Prozesse in einer "Anwendung"

  Alt 29. Apr 2017, 02:29
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.
$2B or not $2B

Geändert von himitsu (29. Apr 2017 um 02:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Mehrere Prozesse in einer "Anwendung"

  Alt 29. Apr 2017, 14:36
Eine DLL hat keine Threads.
OK Kern...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

AW: Mehrere Prozesse in einer "Anwendung"

  Alt 29. Apr 2017, 14:51
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz