ich muss jetzt einfach mal hier nachfragen, weil ich es einfach nicht verstehe. Vielleicht weiß hier ja jemand mehr als ich.
Folgendes: "ich lerne gerade Threads". D.h. ich habe hier @Home auf meinem kleinen Lappy (Lazarus auf ArchLinux) ein Programm von alles linear rechnen auf Threads umgebaut. Das funktioniert auch in Grenzen.
Da mein Lappy nur 4 Kerne hat kann ich also nur bis zu 4 Threads parallel vergleichen. Die Ergebnisse sind jetzt nicht sooo doll (4 Threads brauchen gerade mal halb so lange, wie die 1-Thread-Variante), aber es wird schneller und ich sehe, dass wirklich 1, 2, 3 oder 4 Kerne genutzt werden; an der Effizienz kann man bestimmt noch was tun.
So weit, so gut.
Jetzt habe ich dieses Programm auf Delphi (10, Seattle) portiert und lasse es auf dem Büro-24-Kerne-128GB-Windows-Rechner laufen. Aaaaaber leider macht es überhaupt keinen signifikanten Unterschied, ob ich 1 oder 8 Kerne nutze. Die CPU-Auslastung bleibt bei einem Maximum von ~10% (was etwa 2 Kernen entsprechen würde) - entsprechend gering ist der Laufzeitunterschied. (GROßES FRAGEZEICHEN in meinem Gesicht)

Außer ein paar kleineren Anpassung für die Portierungen ist das Programm so geblieben, wie es unter Lazarus lief (also Erzeugung und Start der Threads, Abarbeitung, Datenstrukturen etc). Ich verstehe nicht, warum der nahezu identische Code so unterschiedlich reagiert.
Daher Frage ich einfach mal, ob jemand eine Idee hat, woran das liegen kann? Gibt es irgendeinen Haken, eine Einstellung, einen Bug, ein sonstwas, was dieses Verhalten bezüglich der Threads bzw. der Parallelisierung erklären könnte?
Vielleicht gibt es hier ja auch Delphi-wissende. Bin dankbar für jede Anregung.
Code kann ich leider nicht zeigen, da einerseits zu viel und andererseits wg. vertraulich.
Ciao,
Photor