Ich kann dieses Verhalten weder mit Lazarus noch mit Turbo Delphi 2006 (mit FastMM) nachstellen. Dabei verwenden meine Threads durchaus relativ häufig ReallocMem und Konsorten. Trotzdem gelingt es mir meine beiden CPU-Kerne voll auszulasten.
Meiner Vermutung ist auch eher, dass hier ein konzeptuelles Problem bei der Threadverwendung vorliegt (Threads blockieren sich gegenseitig/benötigen Ergebnisse des jeweils anderen/verwenden Synchronize). Meine Erfahrung mit Multithreading war, dass ich meine ersten Gehversuche damit mittlerweile auch komplett entsorgen konnte.
IMHO liegt zu 90% ein Fehler in der Planung vor, wenn man irgendwo überhaupt die Synchronize-Funktion verwenden muss oder zu viele Bereiche mit Mutices oder CriticalSections schützen muss.
Ohne entsprechenden Beispielcode kann ich jedoch natürlich nur Raten was ein Problem sein könnte. Eventuell ist ja auch eine verwendete Komponente für das Verhalten verantwortlich, da sie selbst den gemeinsamen Zugriff auf eine eigene Resource synchronisiert und somit deine Threads ausbremst.
Andreas