Anzeige:
Ergebnis 1 bis 2 von 2

Thema: while Schleife mit usleep

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.09.2005
    Beiträge
    23

    Question while Schleife mit usleep

    Hallo,

    ich habe ein Problem mit einer while Schleife die mir eine Verzoegerung von distanz Sekunden schaffen soll.
    Erstmal der Code:
    PHP-Code:
    void Sd20::verzoegerung (int distanz

    #if DEBUG > 0     
       
    std::cout << "sd20::verzoegerung" << std::endl
    #endif     

       
    clock_t timer;     
       
    timer clock() + distanz CLOCKS_PER_SEC ;     
       
    test 0;     
       while (
    clock()<timer)
       {     
          
    test++;     // Testvariable zum zählen wie oft die Schleife läuft
          
    usleep(10000);     
          
    qApp->processEvents(); //Während der Schleife auf Events reagieren     
       
    }         
       
    std::cout << test << std::endl

    Das qApp->processEvents(); brauche ich damit meine GUI auch innerhalb der Wartezeit Buttons gleich annimmt (ohne lange verzögerung). (GUI mit QT erstellt)

    Entferne ich das usleep(10000); funktioniert alles wunderbar (bis auf den kleinen Nachteil das die Schleife 30000x durchläuft und die CPU Auslastung 85% beträgt )

    In dem Moment wenn ich die Funktion (mit sleep) aufrufe, friert mein Programm teilweise ein, einige Anzeigen aktualisieren sich nicht mehr, und es reagiert teilweise nicht mehr auf Buttons.

    Weiss einer warum sich das sleep nicht mit dem Rest verträgt? Theoretisch sollte er doch einfach nur 10ms warten und dann weitermachen oder sehe ich das Falsch?

    Ich bin für jeden Tip dankbar. (solange es bei der Prozesssteuerung bleibt -> KEINE THREADS )

    gruß
    Tobias

    PS: Mir würde es reichen wenn er die Schleife meinetwegen 10x (wenn sein muss auch 100x oder 500x) durchläuft.

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Äh, QTimer?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •