Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Threads arbeiten nur auf einem Kern (https://www.delphipraxis.net/152701-threads-arbeiten-nur-auf-einem-kern.html)

himitsu 2. Jul 2010 13:10

AW: Threads arbeiten nur auf einem Kern
 
Zitat:

Zitat von Patrick (Beitrag 1033113)
Hat noch jemand eine Idee?

Da die Gesamtleistung ja (wie schon richtig erkannt) maximal 100% einer CPU ergibt, wird wohl irgendwo etwas sein müssen, welches immer nur einen Thread am laufen läßt.

Aber ohne genauere Erkenntnis über das Innere deiner Threads, können wir auch nicht weiterhelfen.
Du mußt ja auch "nur" rausfinden, welcher Code bei dir dafür verantwortlich ist.

generic 2. Jul 2010 13:18

AW: Threads arbeiten nur auf einem Kern
 
Ihr belebt hier übrigens diesen Beitrag von 2004 neu:
http://www.delphipraxis.net/48397-tt...maschinen.html

Ich hatte mich damals damit abgefunden.

himitsu 2. Jul 2010 13:49

AW: Threads arbeiten nur auf einem Kern
 
Was Anderes ...
sind bei dir eigentlich alles "echte" Kerne oder ist das nur so'ne Intel-Spar-CPU mit virtuellen Kernen?

Patrick 2. Jul 2010 14:10

AW: Threads arbeiten nur auf einem Kern
 
@generic
Hast du auch FastMM als MemoryManager gehabt?

@himitsu
Ich habe eine solide AMD 2-Kern CPU :wink:

generic 2. Jul 2010 14:13

AW: Threads arbeiten nur auf einem Kern
 
Bei mir waren es 4 phys. CPUs, dass Hyperthreading gab es damals noch nicht.
Bei dem Projekt glaube ich nicht, dass ich den FastMM genutzt.
Delphi 6 oder 7 war das damals.

shmia 2. Jul 2010 16:51

AW: Threads arbeiten nur auf einem Kern
 
Und wie oft wird in den Threads die Synchronize-Methode ausgerufen?
Jede Methode, die über Synchronize aufgerufen wird läuft im Kontext des Hauptthreads.

igel457 2. Jul 2010 21:38

AW: Threads arbeiten nur auf einem Kern
 
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

generic 2. Jul 2010 23:34

AW: Threads arbeiten nur auf einem Kern
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also ich habe das jetzt mal ausprobiert. Es hat mir keine Ruhe gelassen.
Delphi 2007 mit FastMM4

alles gut


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:03 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz