In
diesem, nun leider geschlossenen Thread, kam die Frage auf, warum man denn
BeginThread anstelle von
CreateThread nehmen sollte. Nun die Antwort ist recht einfach. BeginThread ist zwar nur ein Wrapper für CreateThread, setzt aber zusätzlcih die globale Variable
IsMultiThreaded auf True und macht so den Heap threadsafe.
Und um die Frage von uall@ogc zu beantworten: Dies gilt auch für C/C++. Auch dort sollte man
CreateThread nie direkt aufrufen, sondern jewals den Wrapper der zum Compiler gehörigen Bibliothek:
PSDK hat folgendes geschrieben: |
A thread that uses functions from the static C run-time libraries should use the beginthread and endthread C run-time functions for thread management rather than CreateThread and ExitThread. Failure to do so results in small memory leaks when ExitThread is called. Note that this is not a problem with the C run-time in a DLL.
|
Und kalr fuinktioniert das mit deiner Prozedur auch, ich bin nur der Meinung, wenn Delphi einen Typ fest vorgibt in der Hilfe:
Delphi-Quelltext
1:
| type TThreadFunc = function(Parameter: Pointer): Integer; |
Dann sollte man den auch benutzen, die werden sich schon was dabei gedacht haben.