-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
10. Mai 2015
Ganz so eindeutig ist die Schuldfrage hier aus meiner Sicht nicht, Luckie. Immerhin wurde eindeutig etwas an Windows verändert. Analogum: Die neuen Styles übernehmen ab Windows Vista (?) das Neuzeichnen meistens, man kann demnach ein beschäftigtes Single-Thread-Programm nicht mehr wie früher "weißwischen". Wenn ein Programmierer für Windows bis XP sich darauf einstellt und später dieses...
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
7. Mai 2015
So, Daniel, Problem (anscheinend) gelöst: Ich habe es mit den CriticalSections wohl doch etwas übertrieben: So umhüllte ich auch synchronize damit. Warum, weiß ich selbst nicht mehr genau, ich probierte eben aus, wie meistens: Nach "Umhüllung" nahezu des gesamten Threadcodes ver- und zerkleinerte ("ziselierte") ich die kritischen Abschnitte soweit, wie es noch stabil blieb, um eine möglichst hohe...
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
7. Mai 2015
Volltreffer, ich meinte natürlich nicht beanspruchen - Entschuldigung! Schönen Urlaub!
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
7. Mai 2015
Hallo Daniel, ich möchte Dich als Administrator über Gebühr beanspruchen, aber dennoch noch etwas einwenden.
Das spielt bei diesem Algorithmus m.E. nicht die entscheidende Rolle. Jede (Teil-)Menge wird in eine große und kleine Teilmenge partitioniert und der Algorithmus auf beide mit je einem Extrathrad separat losgelassen. Da die beiden Teilmengen nichts mehr miteinander zu tun haben,...
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
7. Mai 2015
Was meinst Du mit "tricksen"? Meine Idee, Threadunterbrechungen bewußt auszulösen?
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
6. Mai 2015
Nochmals besten Dank!
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
6. Mai 2015
Danke für Deine Mühe und die helfenden Hinweise, Daniel! Damit werde ich mich beschäftigen.
Ich programmiere als Hobbyprogrammierer bei den meisten Sachen, so auch hier, ständig am Limit, durch Lesen und Lernen, Versuch und Irrtum, wie viele eben. Was meinst Du, wie froh ich war, es soweit hinbekommen zu haben?!
Ergänzung: Das Polling gefällt mir auch nicht, aber mit Messages kann es m.E....
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
6. Mai 2015
Habe es soeben ausprobiert: Unter Windows XP ist die gleichzeitige Partitionierung der Teilmengen im parallelen Quicksort sogar auf Einkernprozessoren prinzipiell zu erkennen. Ist zwar ziemlich hakelig, ruckelig, langsam, schlichtweg eine Qual für Windows, aber es funktioniert.
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
6. Mai 2015
Beim Multithreading-Quicksort war ich sogar schon mit dem Verhalten des Delphi-2-Compilates zufrieden, beim Multithreading-Mergesort benötigte ich Compilate ab Delphi 5, damit es auch auf XP ordnungsgemäß läuft.
Daniel, Du kannst es gern selbst ausprobieren, aber natürlich antworte ich auch: Auf Windows 7 ist es "extrem", denn da läuft - sichtbar - gar nichts mehr gleichzeitig, sondern nur...
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
6. Mai 2015
So, Yield hat intern auch nur ein sleep(x). Das Ergebnis ist mithin leider das gleiche wie mit sleep(0).
Luckie, das kannst Du gern wissen: Besorg Dir eines meiner aktuellen Sortierkinos und lasse den Algorithmus "Quicksort parallel (Multithreading)" auf zwei verschiedenen Windows mit Mehrkernprozessor ablaufen, eines bis XP, eines danach (meine Experimentierfelder sind einmal XP und dann...
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
6. Mai 2015
Danke!
Das erinnert mich an die jüngste Diskussion mit dem sleep(0) nach LeaveCriticalSection. Mit sleep(0) experimentierte ich an diesen Stellen (die kein Ende kritischer Abschnitte sind) auch schon, allerdings nicht mit zufriedenstellendem Ergebnis.
Muß ich mal herausfinden, ab welcher Delphiversion das Yield bereitgestellt wird und wie das ggf. in niedrigere Delphiversionen eingearbeitet...
-
Forum: Win32/Win64 API (native code)
by Delphi-Laie,
6. Mai 2015
Hallo Delphifreunde!
Bekanntlich entscheidet Windows nach eigenem Gutdünken, wann und an welcher Stelle es Threads unterbricht und wann später an derselben Stelle (also dem nachfolgenden Befehl des letzten vor der Unterbrechung abgearbeiteten Befehls) fortsetzt.
Gibt es eine Möglichkeit, Windows an einer bestimmten Stelle zur Unterbrechung eines Threads (des eigenen Threads) aufzufordern...