counter realisieren



  • Ich habe zurzeit leider keinen Computer in der Hand um dieses Code zu testen.
    Es geht um einen Counter. Meine Frage ist, ob dies so funktionieren würde, oder was ich verbessern könnte. (Zur Anmerkung meine C++ Kenntnisse sind noch nicht wirklich weit ausgereift) Also hier mein Code:

    int main() {
       int icounter = 100000;
       bool bcounterfinsih = false;
    
       while(true) {
          if(icounter > 0) {
             bcounterfinish = false;
             icounter--;
          }
          else {
             bcounterfinish = true;
             icounter = 100000;
             continue;
          }
       }
    }
    

    Danke schon mal im Voraus



  • Definiere "funktionieren". Deinen jetzigen Code kannst du folgendermaßen verbessern:

    int main()
    {
        for(;;);
    }
    


  • repac3r schrieb:

    [...] Es geht um einen Counter. Meine Frage ist, ob dies so funktionieren würde, [...]

    Klar, das Ding zählt ständig von 100000 bis 0 .

    Beschreib' mal, was du unter einem "Counter" verstehst ...



  • Swordfish schrieb:

    repac3r schrieb:

    [...] Es geht um einen Counter. Meine Frage ist, ob dies so funktionieren würde, [...]

    Klar, das Ding zählt ständig von 100000 bis 0 .

    Beschreib' mal, was du unter einem "Counter" verstehst ...

    Es geht darum das er einen bestimmten Wert(icounter) runter zählt, und dann anhand dem bool bcounterfinish eine andere Funktion ändert. Das ist ja auch nicht der komplette Code des Programms, aber ich möchte wissen, ob das so funktioniert, weil ich gerade keinen Computer zum testen bei mit habe, oder was ich verbessern könnte.



  • Swordfish schrieb:

    repac3r schrieb:

    [...] Es geht um einen Counter. Meine Frage ist, ob dies so funktionieren würde, [...]

    Klar, das Ding zählt ständig von 100000 bis 0 .

    Beschreib' mal, was du unter einem "Counter" verstehst ...

    Es geht darum das er einen bestimmten Wert(icounter) runter zählt, und dann anhand dem bool bcounterfinish eine andere Funktion ändert. Das ist ja auch nicht der komplette Code des Programms, aber ich möchte wissen, ob das so funktioniert, oder was ich verbessern könnte.


  • Administrator

    Was du suchst ist eher einen Timer. Alle x Sekunden soll eine Funktion aufgerufen werden. Und was du hier präsentierst, ist gar keine gute Idee.
    1. Es ist Busy-Waiting, heisst du beschäftigst die CPU mit unnötiger Arbeit, während du auf etwas wartest.
    2. Du bist von der Geschwindigkeit der CPU abhängig. Was passiert, wenn dein Code auf einer deutlich schnelleren CPU ausgeführt wird? Deine Funktion wird öfter aufgerufen.

    Lösung: Verwende einen Timer. Dazu musst du aber mehr Angaben machen, da C++ dies von Haus aus nicht kann und du auf Bibliotheken oder der API des Betriebsystems zurückgreifen musst. Auf welcher Plattform/Betriebsystem soll der Timer laufen? Wie genau soll er sein?

    Grüssli



  • Erstmal danke, wegen der Antwort mit dem Timer.

    Das Programm sollte hauptsächlich unter Windows laufen.
    Aber wenn es ebenso unter Linux laufen würde, wäre es auch nicht schlecht.



  • Dravere schrieb:

    Was du suchst ist eher einen Timer. Alle x Sekunden soll eine Funktion aufgerufen werden. Und was du hier präsentierst, ist gar keine gute Idee.
    1. Es ist Busy-Waiting, heisst du beschäftigst die CPU mit unnötiger Arbeit, während du auf etwas wartest.
    2. Du bist von der Geschwindigkeit der CPU abhängig. Was passiert, wenn dein Code auf einer deutlich schnelleren CPU ausgeführt wird? Deine Funktion wird öfter aufgerufen.

    Lösung: Verwende einen Timer. Dazu musst du aber mehr Angaben machen, da C++ dies von Haus aus nicht kann und du auf Bibliotheken oder der API des Betriebsystems zurückgreifen musst. Auf welcher Plattform/Betriebsystem soll der Timer laufen? Wie genau soll er sein?

    Grüssli

    Gibt es eigentlich eine Timer Funktion in der Boost Bibliothek ?


  • Administrator

    Von Windows selbst gibt es die Timer Funktionen. Für einfache Sachen reichen diese meistens aus.

    Bei Boost kenne ich nur die Timer Funktionen von Boost.Asio.

    Grüssli



  • Dravere schrieb:

    Von Windows selbst gibt es die Timer Funktionen. Für einfache Sachen reichen diese meistens aus.

    Bei Boost kenne ich nur die Timer Funktionen von Boost.Asio.

    Grüssli

    Ok danke für die Hilfe 🙂


Anmelden zum Antworten