Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem mit 2 Threads und CPU-Auslastung

  Alt 27. Mai 2008, 16:23
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.
  Mit Zitat antworten Zitat