' schrieb:wo also liegt der vorteil von 0ms warten?
Es gibt einen Unterschied zwischen 50% Auslastung und 50% Auslastung.
Folgender Fall: Ein Thread dauert 10µs. Jetzt kann ich folgendes machen. 10µs Thread, 1ms Pause, 10µs, 1ms Pause und so weiter. Hier ist die CPU-Auslastung 1%. Was aber wichtig ist: In der Pause kommen andere Thread dran!
Mach ich jetzt 10µs Thread, 0ms Pause, 10µs, 0ms Pause usw. ist die Auslastung 100%! (50% wegen 2 Cores). Aber: in der Pause - eigentlich am Pausenbeginn alle 10µs - findet ein Taskswitch statt. So kommen alle Threads trotz Belastung von 100% immer dran. Es kommt also weniger auf die Länge der Pause an, als vielmehr darauf, dass die überhaupt stattfindet.
Wenn mein Thread aber tatsächlich 100ms dauert, dann kommt während dieser 100% Auslastung kein anderer Thread dran! Und dann hängt der Rechner!
Einmal entsteht die 100% durch die Aufsummierung vieler, kurzer Wiederholungen, einmal ist die 100% ein einziger Durchlauf. Dieser Unterschied ist wichtig, aber leider nicht erkennbar.
Meine Delphi-Programme laufen alle auf 100%. Mach ich dann ein zweites, drittes und viertes auf, geht sofort die Auslastung pro Ausführung auf 50%, 33% bzw 25% zurück. An den Programmen selbst merkt man nichts. Und dass der Prozessor ausgelastet ist merkt man nur am Lüfter.
Bei LV sieht die Sache etwas anders aus. Wenn da wegen Graph-Refresh mal 30% stehen, dann ist das keine Aufsummierung vieler gleicher Thread, sondern da arbeitet der Graph tatsächlich so viel.