While-Schleife nicht unterbrechbar?
-
lese- und schreiboperation auf volatile variablen sind 'observable behaviour' - sie dürfen weder wegoptimiert werden noch darf der compiler die reihenfolge derzugriffe ändern. deklaratorisch funktioniert volatile wie const - überall wo const erscheinen darf darf auch volatile erscheinen (beide gleichzeitig ist ebenfalls möglich), volatile ist also teil des typs der variable/funktion.
volatile bool global_timer_variable_vom_typ_bool; for (i=0;i<100;i++) { // berechne mir irgendwas // mach damit was global_timer_variable_vom_typ_bool=false; while (!global_timer_variable_vom_typ_bool) // tue nichts }
-
Wie gesagt, er ignoriert den Timer weiterhin, auch mit volatile. Der Timer kommt einfach nicht zum Zuge.
Bei Delphi hatte ich mal sowas ähnliches. Da gibts ein Application.ProcessMessages dass dem Programm innerhalb von langen Schleifen die Möglichkeit gibt, auf Benutzereingaben und Windows-Messages zu reagieren.
-
wie wird der timer denn programmiert?
-
... nimm true/false und nicht TRUE/FALSE
-
Ich höre gerade woanders, dass ich statt des Timers (der stammt aus OpenInventor, SoTimer) besser sleep() benutzen soll. Stimmt eigentlich...
-
Öhm, welche Heade-Datei brauche ich für sleep()? Ich habe time.h included aber er kennt sleep() trotzdem nicht.
-
Sleep() nicht sleep()!
Bin mir aber nich sicher ob das besser ist...
denn bei Sleep wird die gesamte Programmausführung verzögert...
-
5er1al schrieb:
Sleep() nicht sleep()!
Bin mir aber nich sicher ob das besser ist...
denn bei Sleep wird die gesamte Programmausführung verzögert...Sleep ist eine WinAPI-Funktion und verzögert AFAIK nur den aktuellen Thread.
Moritz
-
wenn sleep() möglich ist, sollte man es einer warteschleife grundsätzlich vorziehen. im übrigen wird nicht der ganze prozess sondern nur der aktuelle thread unterbrochen.
-
gut, bei mir inner hilfe steht das:
Beschreibung
Sleep pausiert die gesamte Programmausführungen gemäß dem Parameter Millseconds.
BCB 6 Enterprise