![]() |
AW: Schleifenabbruch durch Esc Taste...
Zitat:
PS: Drum bringt es auch wenig sich massig viele Kerne/CPUs zu besorgen, denn wenn es nicht genug Threads gibt, um alle Kerne auszulasten, verschwendet man nur Rechnenleistung. |
AW: Schleifenabbruch durch Esc Taste...
Zitat:
Du reihst Dich ein bei den Urhebern dummer Sprüche: „Ich glaube, dass es auf der Welt einen Bedarf von vielleicht fünf Computern geben wird.“ ![]() |
AW: Schleifenabbruch durch Esc Taste...
16 Kerne für einen Office+Internet-PC sind also besser als 8?
|
AW: Schleifenabbruch durch Esc Taste...
Natürlich, wenn 15 Kerne vor sich hinschlummern statt nur 7, ist das doch viel cooler.
|
AW: Schleifenabbruch durch Esc Taste...
Zitat:
Tschuldijung, Freitag eben... |
AW: Schleifenabbruch durch Esc Taste...
Zitat:
Aber die werden ja großteils blockiert, wenn ich die Schleife ohne Sleep laufen lasse. Es geht dann eben 12 Sekunden lang nichts mehr. Weder in der compilierten Form, noch lässt sich ein anderes externes Fenster anklicken. Der Mauszeiger bleibt solange der Pfeilzeiger. |
AW: Schleifenabbruch durch Esc Taste...
Eigendlich sollte kein Thread in der Lage sein, irgendeinen anderen durch eine Schleife zu "blockieren" (abgesehen von welchen mit niedriger Priorität). Dafür sorgt das Betriebssystem.
Deswegen finde ich auch die Lösung mit dem Sleep irgendwie merkwürdig (und die Erklärung dazu) :gruebel: |
AW: Schleifenabbruch durch Esc Taste...
Jeder Thread bekommt vom System ein "Fenster" von paar Millisekunden, in dem es einen Kern nutzen kann, bevor Windows den Kern für den nächsten Thread freimacht.
Mit einem Sleep(0) kann man sein "Fenster" sofort abbrechen ... damit Windows nicht "sinnlos" den Thread weiter behandelt, obwohl er "jetzt" nichts mehr machen will. Was ist das denn für ein PC? Wieviele Kerne gibt es und wie sind die ausgelastet? (während der Schleife und in den 12 Sekunden, bzw. davor/danach) Wie sieht der RAM aus? (im Cache, Verfügbar, Frei, Ausgelagert und Zugesichert) Bei einer 1-Kern-CPU kann man mit einem Thread ja problemlos alles lahmlegen. -> genausoviel/mehr Aufgaben (ala arbeitende Threads), als Arbeiter (Kerne) |
AW: Schleifenabbruch durch Esc Taste...
Zitat:
Zitat:
Soweit ich weiß, unterbricht Windows die Threads nicht selbst, sondern nur die Prozesse... |
AW: Schleifenabbruch durch Esc Taste...
Wie ich schon schrieb, gibt es das Problem mit der Verzögerung auf den Abbruch bei mir auch nicht ohne Sleep. Ich hab das Sleep nur eingesetzt, um die sinnlose Auslastung der CPU zu unterbinden, weil die Schleife ohne Sleep eben so schnell durchrauscht, wie es die CPU hergibt. Mit Sleep wird die Schleife für einige Millisekunden unterbrochen und dann läuft die Schleife auch merklich langsamer durch. Ein Sleep(0) lastet übrigens genauso aus wie ohne Sleep.
Der Nebeneffekt des Sleep ist, dass auch andere Threads desselben Prozesses Zeit bekommen, auch wenn sie das aufgrund des Schedulers eigentlich sowieso müssten, vor allem bei Mehrkernern. Daher weiß ich nicht genau, warum das Sleep beim Verzögerungsproblem hilft. Ich vermute, dass der GUI-Thread derselbe ist wie der der Schleife - und da der mit der Schleife zu tun hat, kommt er nicht mehr zum Bearbeiten der GUI. MfG Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz