Sleep reagiert seltsam in Schleife
-
Ich kannte das mit dem flush nicht, hab es jetzt gesucht und gefunden.
Funktioniert auch. Man kann mich noch zu leicht ablenken als Anfänger.
Danke.cout << ....... << flush;
oder
cout.flush();
-
TGGC, was ist loss, bist du krank? Ich meine ... ein hilfreicher Beitrag von dir, das kann ja wohl nicht sein.
-
-
Ich glaube, das Problem ist weniger das fehlende
std::flushund viel eher die 1 als Parameter fürSleep-Sleeperwartet ms als Parameter. Und mit ner 1 wird es glaube ne Pause von ca. 17ms oder so machen, irgendwo in der MSDN steht die Auflösung vonSleepdrin...Mach einfach mal drei Nullen ran (hinten an die eins ;D) und versuch es noch mal ^^
bb
-
Hi,
ist nicht sogar für std::cerr garantiert, dass es nicht puffert (mit allen Vor- und Nachteilen) ?
Bei uns können wir jedenfalls damit prüfen, ob unser Problem etwas mit dem Puffern zu tun hat.Gruß,
Simon2.
-
Simon2 schrieb:
Hi,
ist nicht sogar für std::cerr garantiert, dass es nicht puffert (mit allen Vor- und Nachteilen) ?
Bei uns können wir jedenfalls damit prüfen, ob unser Problem etwas mit dem Puffern zu tun hat.Gruß,
Simon2.
Japp, imho ist das garantiert
-
unskilled schrieb:
Ich glaube, das Problem ist weniger das fehlende
std::flushund viel eher die 1 als Parameter fürSleep-Sleeperwartet ms als Parameter. Und mit ner 1 wird es glaube ne Pause von ca. 17ms oder so machen, irgendwo in der MSDN steht die Auflösung vonSleepdrin...Mach einfach mal drei Nullen ran (hinten an die eins ;D) und versuch es noch mal ^^
bb
Offensichtlich nicht:
SleepWhile schrieb:
...Ausgabe wird nach 5 Sekunden angezeigt...
-
SeppJ schrieb:
unskilled schrieb:
Ich glaube, das Problem ist weniger das fehlende
std::flushund viel eher die 1 als Parameter fürSleep-Sleeperwartet ms als Parameter. Und mit ner 1 wird es glaube ne Pause von ca. 17ms oder so machen, irgendwo in der MSDN steht die Auflösung vonSleepdrin...Mach einfach mal drei Nullen ran (hinten an die eins ;D) und versuch es noch mal ^^
bb
Offensichtlich nicht:
SleepWhile schrieb:
...Ausgabe wird nach 5 Sekunden angezeigt...
oh - sry.
Da stand ja was vonwegen Linux, da stimmt das mit den ms natürlich auch nicht, weil dort Sekunden angegeben werden müssen so weit ich weiß^^bb
-
Naja.
Sleep nimmt Millisekunden, sleep dagegen nimmt Sekunden.
So oder so ähnlich.
-
hustbaer schrieb:
Naja.
Sleep nimmt Millisekunden, sleep dagegen nimmt Sekunden.
So oder so ähnlich.Genau so, in der Unix-welt gibt es dann glaube ich noch usleep^^
so in etwa:
void Sleep(unsigned long milliseconds) { # if defined(_WIN32) || defined(_WIN64) ::Sleep(milliseconds); # else ::sleep(milliseconds / 1000); ::usleep(milliseconds % 1000); # endif }bb
-
::usleep(milliseconds % 1000);->::usleep((milliseconds % 1000) * 1000);
oder so
-
hustbaer schrieb:
::usleep(milliseconds % 1000);->::usleep((milliseconds % 1000) * 1000);
oder so
das hört sich für mich gerad falsch an
ich hab das so verstanden:
sleep nimmt die sekunden(also(unsigned long)millisekunden/1000) und dann usleep die millisekunden((unsigned long)millisekunden%1000).
da millisekunden schon einunsigned longist, können wir uns den cast hier schenken:
::sleep(millisekunden/1000);- sekunden sind weg, bleiben noch die millisekunden:
::usleep(millisekunden%1000);- millisekunden werden hier "abgearbeitet"oder hab ich das falsch verstanden?
iwo hatte ich auch ma nen grund gelesen, warum man nicht einfach nur usleep aufrufen sollte, aber die url hab ich leider nich mehr gefunden - bzw. nur keinen nerv, die zu suchen ^^bb