Programm soll nichts machen



  • Du kannst deine Beiträge auch einfach editieren.

    Zum Problem, warum lässt dud en Prozess nicht
    einfach 100ms schlafen und führst dann die methode aus.
    Und das natürlich inner Schleife.
    Das Timer Zeug kannste dann weglassen.



  • Das mit der Schlaufe und dem sleep wäre eine Möglichkeit, doch würde ich gerne mein Signal beibehalten und ausserdem würde es mich interessieren wie man das Problem lösen könnte.

    Falls man es lösen kann.

    Gruss

    Ps. darthdespotism

    finde meine und deine while schalufe identisch



  • createEvent();

    waitForSingleObject(); // hat ein timeout und rückgaben (timeout erreich, signal erhalten, error )

    releaseHandle();

    des rest bitte nachlesen, ich hab grad echt keine böcke das zu erklären sorry

    EDIT: ARRRG Linux goumenasai ich weis nicht ob das auch unter linux geht

    EDIT zum 3ten: warum steht das dann eigentlich nicht im linux forum ???



  • Kann man nicht einfach mit clock() die Zeit abfragen beim Start, und dann eine while Schleife solange laufen lassen bis dass die Rueckgabe von clock() groesser ist als der Startwert+100ms?



  • Shinja schrieb:

    Kann man nicht einfach mit clock() die Zeit abfragen beim Start, und dann eine while Schleife solange laufen lassen bis dass die Rueckgabe von clock() groesser ist als der Startwert+100ms?

    Ist man allein auf dem Rechner unterwegs?

    "Was macht das Programm eigentlich die ganze Zeit?" - "Strom verbrauchen" 😃



  • wenn du OHNE sleep die zeit pollst wird die prozessorauslastung auch dementsprechend hoch! genau das wollte er eigentlich vermeiden denk ich mal



  • Ach so, vielen Dank. Das war mir unklar.



  • Du musst Dir nur vorstellen was dann im Programm passiert. Du überprüfst die Zeit, Schleife ist zuende, Du überprüfst die Zeit, ..... und das so schnell wie es die CPU hergibt.

    Bei der Variante mit den Signalen bittet man das Betriebssystem um eine Mitteilung nach einer gewissen Zeit.

    Gerade noch vertretbar wäre eine Lösung bei der zwar gepollt wird, aber mit entsprechenden Pausen zwischen den Prüfungen. Dann würde der CPU immerhin zwischendurch Zeit gegeben etwas anderes zu tun.

    Oder um es mal ganz platt zu versinnbildlichen:
    Variante 1: "Sind wir schon da?" - "Nein" - "Sind wir schon da?" - "Nein" - ....
    Variante 3: "Sind wir schon da?" - "Nein" - Pause... - "Sind wir schon da?" - "Nein" - ....

    Variante 2: "Sag mir wenn wir da sind" - Pause... - "Wir sind da!"

    🤡



  • Vielen Dank, jetzt habe ich es verstanden.

    Aber war da nicht etwas, dass Sleep() resp. sleep() nicht portabel wären? Wäre die Variante mit clock() es?

    Selbstverständlich ist unter diesen Umständen etwas nicht portables dann immer noch besser, als den PC ganz zu stoppen.



  • C++ unterstützt weder Threading noch Thread-Sleeping im Standard. Du wirst also auf nicht-portable Lösungen umsteigen müssen.

    Für Windows am besten Sleep() aus der WinAPI.

    MfG SideWinder



  • vergesst doch mal das sleep für ne weile, wie ist das mit signalen und semaphoren in linux/unix ? das müsste doch am idealsten sein


Anmelden zum Antworten