Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
AW: Threads arbeiten nur auf einem Kern
2. Jul 2010, 12:14
Der Speichermanager Synchronisiert auch noch einiges ... kann sein, daß (wenn du sehr viele Speicheranfragen/-freigaben hast, im Verhältnis zum restlichen Code) da auch mehr in ein Thread reinsynchronisiert wird.
(der kann halt auch nicht alles paralell machen, wenn er eine gemeinsame Speicherverwaltung nutzt)
Wann wurde nochmal FastMM in Delphi integriert?
(bin mir nicht sicher, ob dieses erst ab Delphi 2006 drinnen ist)
Der alte Delphi-Speichermanager konnte immer nur einen Thread geichzeitig bediehnen.
Bei mehreren gleichzeitigen Anfragen, mußten andere warten.
FastMM versucht (ich glaub 3 Thread) gleichzeitig innerhalb verschiedenster Speichergrößen zu unterstützen, bei einer Speicheranfrage (also eine 10 Byte-Anfrage und Eine nach 10.000 Byte werden sich nicht behindern).
Ist ein Speicherblock grade blockiert, dann versucht er sofort den Nächsten und wenn Dieser es auch ist, dann noch eines weiter.
Ist alles blockiert, dann muß ebenfalls gewartet werden.
ABER, bei Speicherfreigaben und bei Reallocierungen muß er genau auf einen bestimmten Block zugreifen und das kann nur für einen einzigen Thread gleichzeitig bewerkstelligt werden.
$2B or not $2B
|