textausgabe während Sleep()



  • oder einfach eine art stoppuhr.. vor der schleife zeit prüfen und di eschleife solange ausführen bis 5minuten rumsind...

    geht doch auch?



  • Benötigt auch kein sleep.



  • nun.. es würde eigentlich ein sleep reichen... aber ich bin gerade am probieren und wollte unbedingt das sich da was bewegt 🙂 (hier: die punkte... 😉

    so hab ich das jetzt gelöst... wobei ich das wohl wieder durch ein simples sleep ersetzten werde... (ich frage server ab.. und zwischendrin soll natürlich eine pause sein (~1min).. die ausgabe mit den punkten ist eigentlich nur spielerei 😉

    geht der code auch noch simpler? 😉

    time_t ststart,stend;
        double sleeptime;
        time(&ststart);
    
        std::cout << "Sleeping for about 5 Seconds";
        while(sleeptime < 5) {
    
            Sleep(500);
            std::cout << ".";
    
            time(&stend);
            sleeptime = difftime(stend, ststart);
        }
        std::cout << "\n\n";
        //Reset sleeptime
        sleeptime = 0;
    


  • taurus schrieb:

    nun.. es würde eigentlich ein sleep reichen... aber ich bin gerade am probieren und wollte unbedingt das sich da was bewegt 🙂 (hier: die punkte... 😉

    so hab ich das jetzt gelöst... wobei ich das wohl wieder durch ein simples sleep ersetzten werde... (ich frage server ab.. und zwischendrin soll natürlich eine pause sein (~1min).. die ausgabe mit den punkten ist eigentlich nur spielerei 😉

    geht der code auch noch simpler? 😉

    time_t ststart,stend;
        double sleeptime;
        time(&ststart);
    
        std::cout << "Sleeping for about 5 Seconds";
        while(sleeptime < 5) {
    
            Sleep(500);
            std::cout << ".";
    
            time(&stend);
            sleeptime = difftime(stend, ststart);
        }
        std::cout << "\n\n";
        //Reset sleeptime
        sleeptime = 0;
    

    Ja, du machst es dir zu kompliziert 🤡

    void interactiveSleep(unsigned int sleepTime, unsigned int sleepDelay, char sleepChar = '.')
    {
    	for (unsigned int i = 1; i <= sleepTime; i += sleepDelay)
    	{
    		std::cout << sleepChar;
    
    		Sleep(sleepDelay);
    	}
    }
    
    int main()
    {
    	std::cout << "Sleeping for about 5 seconds ";
    	interactiveSleep(5000, 500);
    }
    

    Sollte exakt das selbe bewirken, ist aber kürzer und als Funktion auch flexibler einsetzbar.



  • mhh? ne for schleife? aber.. einmal raufzählen heißt ja nicht das es eine millisekunde ist?



  • Ich würde dafür einfach einen Thread nehmen.



  • einfach... ich als absoluter anfänger und dann gleich threads ^^ 🙂


  • Administrator

    @Kóyaánasqatsi,
    Nicht mal Mathematik kann er, wie soll er da Threads verwenden können? Vielleicht braucht er auch eine Brille, keine Ahnung. Aber wie er auf die Idee mit der einen Millisekunde kommt, ist mir ein Rätsel. Dabei muss man die Funktion nur anschauen und sieht sofort, dass 10 mal 500 Millisekunden geschlafen wird, was 5000 Millisekunden sind. Und 5000 Millisekunden sind 5 Sekunden ... aber naja ... 🙄

    Was ich nehmen würde, kommt ganz auf das Anwendungsgebiet an. Es gibt Timer, es gibt Sleep, es gibt Möglichkeiten mit Threads etwas zu machen, usw. Kommt halt ganz darauf an, wieso man eigentlich warten möchte.

    Grüssli



  • dravere.. nun sei mal nicht so hart 🙂 die 500 übersieht man doch sehr leicht.. außerdem ist es spät am abend.. und die forschleife braucht doch bestimmt auch ne halbe ms 🙂 (ok darauf kommt es nun nicht an 😉 )
    ich bin halt ein genie (und denke manchmal zu kompliziert 😉 )

    der server soll nicht mit anfragen bombadiert werden sondern nur alle x min abgefragt werden 😉 daher reicht ein einfaches sleep....

    perfektionieren könnte man das ganze mit threads (damit jeder server zur gleichen zeit abgefragt wird)
    es reicht aber erstmal das wir alle x min einen status/daten vom server bekommen...



  • taurus schrieb:

    dravere.. nun sei mal nicht so hart 🙂 die 500 übersieht man doch sehr leicht.. außerdem ist es spät am abend.. und die forschleife braucht doch bestimmt auch ne halbe ms 🙂 (ok darauf kommt es nun nicht an 😉 )
    ich bin halt ein genie (und denke manchmal zu kompliziert 😉 )

    der server soll nicht mit anfragen bombadiert werden sondern nur alle x min abgefragt werden 😉 daher reicht ein einfaches sleep....

    perfektionieren könnte man das ganze mit threads (damit jeder server zur gleichen zeit abgefragt wird)
    es reicht aber erstmal das wir alle x min einen status/daten vom server bekommen...

    UDP meets Endlosschleife? Je nach Umfang/Wichtigkeit der Daten könnte das eine viel bessere Lösung sein. Geht aber weit über das eigentliche Thema dieses Threads hinaus.



  • in meinem fall sind das wichtige daten daher setzte ich auf tcp, nicht udp..
    der austausch wird in der finalen version etwa alle 5 bis 10min stattfinden..

    und nebenbei: die datenmenge ist so gering das der server der die daten (von rund 100servern) abfrägt gerade mal durschnittlich 1,3kbit/sec der bandbreite verbraucht 🙂 (und das bei anfrage im intervall von einer minute..)


Anmelden zum Antworten