Ich habe ein Programm geschrieben in dem ich "Arbeiten" auf Threads aufteile, die Threads synchronisieren hier und da via Critical Sections.
Um die CPU optimal aus zu lasten erzeuge ich Pro Kern einen Thread.
Unter Linux scalliert dies auch recht Brauchbar: Bei der Verdoppelung der Threads von 2 auf 4 verringert sich die Rechenzeit von 7s auf 3s. Auf meinem Privaten Windows Rechner ebenfalls. (Beide CPU's haben 4-Cores)
Starte ich das selbe Programm nun aber auf der Arbeit dann benötigt die Berechnung egal wie viele Threads > 1 immer 9s (im Single Tread Mode 3-4s), hier habe ich einen Intel I7 mit 8 Kernen. Habe auch schon versucht sämmtliche Wartebereiche der Critical Sections zu deaktivieren, bringt alles nichts, sobald ich die mehreren Threads aktiviere bricht die Performance immer auf 9s ein (selbst wenn ich andere Aufgaben wähle die im Single Thread mode andere Zeiten haben). Die Berechneten Ergebnisse sind immer korrekt.
Ich weis das ist recht nah an Glaskugel lesen, aber habt ihr ne idee woran das liegen kann ?
Allgemein an Windows kann es nicht liegen, auf dem Privaten Rechner funktioniert es ja. Ich Tippe darauf dass mein Arbeits PC irgend ein Tool / Gruppenrichtlinie hat, bei der dieser Effekt eintritt. So ist z.B. Bereits bekannt, dass der "TOpenDialog" bei mir auf Arbeit teilweise bis zu 30s beim öffnen Braucht, weil der Virenscanner da wohl immer erst alle möglichen Anfragen beim Anzeigen der Netzlaufwerke prüft ...
Komischerweise funktioniert mein Race Condition Beispiel ( https://corpsman.de/index.php?doc=beisp ... _condition ) auch auf der Arbeit wie erwartet. Daher habe ich Aktuell noch die Hoffnung, dass es evtl. doch an meiner Implementierung liegt, aber auch hier dann die Frage warum geht es bei 2 von 3 Rechnern und beim 3. nicht
