Der Prozedurkopf hat natürlich keinen Einfluss auf die Speicherverwaltung. War nur ein Tipp nebenbei. Und Windows freut sich
Die Speicherverwaltung von Delphi hat eine Critical Section und es darf eben nur ein Thread gleichzeitig darauf zugreifen. Ein Thread hat ja nur einen eigenen Stack. Heap, Datensegment und Codesegement sind ja identisch.
Aus der Getmem.inc:
Delphi-Quellcode:
function SysReallocMem(p: Pointer; size: Integer): Pointer;
// Resize memory block.
var
n: Pointer; oldSize: Integer;
begin
...
try
if IsMultiThread then EnterCriticalSection(heapLock);
...
finally
if IsMultiThread then LeaveCriticalSection(heapLock);
end;
end;
Und IsMultiThread wird durch BeginThread auf True gesetzt. Genau deswegen soll man ja auch BeginThread verwenden und nicht den direkten
API-Aufruf von CreateThread.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.