sleep()



  • Hallo zusammen,

    ich habe ein hoffentlich kleines Problem.Die Suche bringt mir keine Ergbnisse, drum schreib ich hier rein.
    Also ich arbeite unter WinXP Prof, und MS Visual C++ 6.0 und hier mache ich eine MFC Applikation

    Ich haben einen Thread, in welchem sich eine Endlosschleife befindet.
    Wenn ich hier keine Pausen einbaue, dann schmiert mir mein PC ab.
    Ich hab an sleep() gedacht...nur kennt er die Fkt nicht und bringt mir eine Fehlermeldung.
    Die #include <unistd.h> kennt er auch nicht!

    Gibts da eine andere Lösung oder etwas wie ich das auch lösen kann?
    Einfach in den Thread Pausen einbauen,oder von außen den Thread Pausen machen lassen (im thread wär mir lieber)

    Danke
    MfG Dippi



  • Warum schmiert Dein PC ab??? Das sollte nie von durch ein User-App ausgelöset werden können (ok, es gibt ausnahmen, die will ich jetzt hier aber nicht sagen).

    Die Funktion heisst übrigens nicht "sleep" sondern "Sleep" und dazu musst Du "windows.h" einbinden...



  • Hi,

    zuerst mal danke...Sleep funktioniert.
    Also in meinem Thread da stelle ich eine Verbindung über RS232 her.
    Und da geht zwischendurch gar nix mehr....

    Warum weiß ich auch nicht...
    An was könnte es denn noch liegen?
    MfG



  • Dippi_81 schrieb:

    Hi,

    An was könnte es denn noch liegen?
    MfG

    Ohne Quellcode kann man nur raten und philosophieren.



  • RS232 müsste seriell sein, oder? 😕
    Das kann halt dauern bis die Daten(vorallem wenn es viele sind) durch sind.
    Ich arbeite auch über RS232, verdamt langsam die Verbindung. Tja.... ist halt so. 😉



  • Ich Rate Dir: Lass die Finger davon die serielle Schnittstelle selber programmieren zu wollen!
    Verwende bitte eine Klasse die schoin alles macht, damit sparst Du Dir (und uns) ziemlich viele Probleme:
    http://www.codeproject.com/system/serial.asp



  • Ich nehme an das dein Thread die komplette Proz.Zeit bekommt. Das kann man nicht verhindern außer das man mal ein Sleep(0) einbaut. Dadurch wird Windows gezwungen dem Thread die Zeitscheibe wegzunehmen und falls vorhanden einem anderen Thread zu geben.



  • Ein Sleep(0) bewirkt aber nicht, dass die CPU belastung zurückgeht... auch kommen keine anderen Threads dran, die eine niedrigere Priorität haben.
    Aus diesem Grunde sind solche Programme immer sehr, sehr schlecht programmiert. Jedes Programm sollte ereignisgesteuert sein und nicht unnötig die CPU-Zeit beanspruchen.


Anmelden zum Antworten