moin moin,
hab eine interesante beobachtung gemacht.
wenn ich mein delphi programm (welches ein langwierige berechnung durchführt) auf einer 4 cpu maschine starte, läuft dieses nur in einer cpu. klar - weil es gibt ja nur den haupt-
vcl-thread des programms.
das programm belegt dann die eine cpu mit 100%. -> finde ich gut.
nun bin ich auf die idee gekommen die berechnung, besser gesagt die datenmenge die als eingabe dient, in 4 gleich gross stücke zu teilen und 4 threads zu starten. diese arbeiten alle 1/4 der gesamt menge ab.
(die thread müssen nicht untereinandere syncronisiert werden).
ich hatte jetzt erwartet das meine 4 threads auf den 4 cpu's jeweils 100% cpu last erzeugen.
das programm sollte auch dann faktor "4" schneller laufen.
allerdings liefen die 4 threads nur mit ca. 20% cpu last je cpu.
das programm war auch ca. nur 1/5 so schnell wie das 1 thread programm.
nun meine frage (vieleicht für dich luckie?):
wieso wird nicht bei den 4 threads 100% je cpu belegt obwohl das der selbe programmteil ist wie bei dem single-
vcl-thread programm?
wie bekomme ich 4x 100% cpu last hin, so das mein programm auch "4x" schneller läuft.
mir ist klar das das nicht 4x schneller wird wegen dem höheren verwaltungsaufwand.