Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi nonVCL - mit Thread ohne Unit Classes (https://www.delphipraxis.net/51510-nonvcl-mit-thread-ohne-unit-classes.html)

turboPASCAL 13. Aug 2005 22:37


nonVCL - mit Thread ohne Unit Classes
 
Ist es möglich bei Non - VCL einen eigenen Thread auzufhüren, wenn ja wie ?

Delphi-Quellcode:
type TThread = function ...?... stdcall;

http://people.freenet.de/mgsdh/image..._Smiley_02.gif <---<<< frisch aus dem Animation Shop, hat nix mit dem Prg. zu tun, den find ich nur niedlich

Phistev 13. Aug 2005 22:46

Re: nonVCL - mit Thread ohne Unit Classes
 
CreateProcess und Konsorten, TThread ist eine Klasse...

/edit: Tschuldigung, natürlich meinte ich MSDN-Library durchsuchenCreateThread :oops:

turboPASCAL 13. Aug 2005 23:18

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Phistev
MSDN-Library durchsuchenCreateProcess und Konsorten,

CreateProcess startet doch einen neuen Commandline Thread/Process oder ?

Zitat:

Zitat von Phistev
TThread ist eine Klasse...

Ja, def. in Classes es muss doch aber auch ohne Unit Classes gehen?

Daniel G 13. Aug 2005 23:48

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von turboPASCAL
Zitat:

Zitat von Phistev
MSDN-Library durchsuchenCreateProcess und Konsorten,

CreateProcess startet doch einen neuen Commandline Thread/Process oder ?

Einen was? Nein, TThread.Create ruft intern auch CreateThread auf.

//Edit: Oh Shit! Lesen sollte man können. Also, verwende am Besten MSDN-Library durchsuchenCreateThread.

turboPASCAL 14. Aug 2005 00:08

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Daniel G
//Edit: Oh Shit! Lesen sollte man können. Also, verwende am Besten MSDN-Library durchsuchenCreateThread.

:wink:

thx.

Olli 14. Aug 2005 00:44

Re: nonVCL - mit Thread ohne Unit Classes
 
In Luckies Win32-Tutorials findet sich zum Thema auch was. Auch wenn ich nicht allen seinen Ausführungen ohne Einwände zustimmen würde, ist dies ein guter Startpunkt zum Verständnis.

Ansonsten kannst du dir auf meiner Webseite mal den Portscanner anschauen, da dieser ebenfalls multithreaded ist. Es reicht nämlich bei weitem nicht den Thread zu erzeugen, sondern der Zugriff muß auch synchronisiert werden.

turboPASCAL 14. Aug 2005 01:35

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Olli
In Luckies Win32-Tutorials findet sich zum Thema auch was. Auch wenn ich nicht allen seinen Ausführungen ohne Einwände zustimmen würde, ist dies ein guter Startpunkt zum Verständnis.

Ansonsten kannst du dir auf meiner Webseite mal den Portscanner anschauen, da dieser ebenfalls multithreaded ist

Hab ich... naja, jedenfalls überflogen :wink: Ich sitze hier schon seit *auf die Uhr guck* Gestern 6.00 weil Link, dass meiste ist geschafft.

Zitat:

Zitat von Olli
Es reicht nämlich bei weitem nicht den Thread zu erzeugen, sondern der Zugriff muß auch synchronisiert werden.

Ich habe mich erstmal für:
Delphi-Quellcode:
function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord; ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord; var ThreadId: LongWord): Integer;
entschieden. Muss der/das auch synchronisiert werden ?

... und nun werd' ich erst mal http://people.freenet.de/mgsdh/image..._Smiley_02.gif

DP-Maintenance 14. Aug 2005 02:44

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Sonstige Fragen zu Delphi" nach "Windows API / MS.NET Framework API" verschoben.
Passt besser in die Windows-API-Sparte.

Olli 14. Aug 2005 10:26

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von turboPASCAL
Muss der/das auch synchronisiert werden ?

Der Code, den du in der Thread-Funktion benutzt ist wichtig. Der Rest ist egal (also ob TThread, CreateThread oder BeginThread) ;)

Luckie 14. Aug 2005 22:36

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Olli
In Luckies Win32-Tutorials findet sich zum Thema auch was.

Nein, da ist ein extra Tutorial: http://delphitutorials.luckie-online.de .

Zitat:

Auch wenn ich nicht allen seinen Ausführungen ohne Einwände zustimmen würde, ist dies ein guter Startpunkt zum Verständnis.
Jupp, da war mal was im Delphi-Forum. Ich weiß es aber nicht mehr. :gruebel:

Olli 14. Aug 2005 22:41

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Luckie
Nein, da ist ein extra Tutorial: http://delphitutorials.luckie-online.de .

Du hast doch mal etwas ausführlicher über BeginThread() vs. CreateThread() doziert gehabt. Keine Ahnung mehr wo das war, im DF oder hier oder sogar woanders. Ich ging nur davon aus, daß das auch in deinen Tutorials gelandet ist.

Luckie 14. Aug 2005 23:05

Re: nonVCL - mit Thread ohne Unit Classes
 
Es ging mir darum, dass man besser BeginThread benutzen sollte, da man dann nicht selber die globale Variable IsMultiThreaded auf True setzen muss, um den Heap threadsicher zu machen. War im DF, so weit ich mich erinnere.

Olli 14. Aug 2005 23:38

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Luckie
um den Heap threadsicher zu machen.

... richtig, wenn man den Delphi-Speichermanager benutzt. Ich persönlich bevorzuge bspw. die Windows-Funktionen zum Speichermanagement in meinen nonVCL-Programmen.

Zitat:

Zitat von Luckie
War im DF, so weit ich mich erinnere.

[df]BeginThread IsMultiThreaded[/df] -> Direkt: hier (und vorausgehende Diskussion hier).

Luckie 14. Aug 2005 23:41

Re: nonVCL - mit Thread ohne Unit Classes
 
GetMem wäre der Delphi Speichermanager? Wie wäre die äquivalente Windowsfunktion?

Olli 14. Aug 2005 23:48

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Luckie
GetMem wäre der Delphi Speichermanager?

Ja. In einigen Delphiversionen wird auch GetMemory() unterstützt (IMO ab D4). Ich bevorzuge letztere, da ich keine variablen Parameter übergeben muß ;)

Zitat:

Zitat von Luckie
Wie wäre die äquivalente Windowsfunktion?

Äquivalent ist gut :mrgreen:

MSDN-Library durchsuchenGlobalAlloc
MSDN-Library durchsuchenLocalAlloc (quasi identisch zu GlobalAlloc in Win32, stammt noch aus Win16!)
MSDN-Library durchsuchenHeapAlloc
MSDN-Library durchsuchenVirtualAlloc
MSDN-Library durchsuchenVirtualAllocEx

Weiterhin gibt es noch ein paar Native APIs ;)

Luckie 14. Aug 2005 23:53

Re: nonVCL - mit Thread ohne Unit Classes
 
Ja, GetMemory gibt es auch noch, ist aber nicht dokumentiert in der Hilfe. Welche Windowsfunktion würdest du jetzt am ehesten für GetMemory verwenden? GlobalAlloc und HeapAlloc machen ja anscheinend das gleiche. Speicher auf dem Heap reservieren. Aber wo ist jetzt der Unterschied zu VirtualAlloc? Der Speicher, den ich mit HeapAlloc reserviere, wird doch wohl auch im virtuellen Adressraum liegen.

Olli 14. Aug 2005 23:57

Re: nonVCL - mit Thread ohne Unit Classes
 
Zitat:

Zitat von Luckie
Welche Windowsfunktion würdest du jetzt am ehesten für GetMemory verwenden?

Ich persönlich bevorzuge GlobalAlloc().

Zitat:

Zitat von Luckie
GlobalAlloc und HeapAlloc machen ja anscheinend das gleiche.

Jain. Bei letzterem kannst du den zu benutzenden Heap angeben. Ersteres benutzt den Standard-Prozeßheap.

Zitat:

Zitat von Luckie
Aber wo ist jetzt der Unterschied zu VirtualAlloc?

Mensch guck doch mal in die Doku. Du kannst eine Adresse vorgeben! (Zumindest versuchen kannst du's) Und VirtualAllocEx() macht das ganze sogar in einem Fremdprozeß, wenn nötig.

Edit: VirtualAllocEx war's, nicht VirtualAllocEx ;)

Luckie 14. Aug 2005 23:59

Re: nonVCL - mit Thread ohne Unit Classes
 
Äh ja. Elfmeter angekommen. :duck: Ich hatte nur auf die Links von dir geklickt und in der kurzen Beschreibung des MSDN sah alles gleich aus. :oops:

turboPASCAL 15. Aug 2005 04:23

Re: nonVCL - mit Thread ohne Unit Classes
 
:cheers: Juhu, mein Programm ist fertig. Das musste jetzt sein.

Es ist immer wieder interessant euch beiden "zuzuhören", für mich ist dieses Thema (erst einmal) erledigt.

THX euch beiden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr.

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