Funktionsaufruf mit Timer



  • Hallo,

    Ich würde gerne folgendes Szenario bei mir realisieren aber weiss nicht wie ich das Sinnvoll machen kann:

    void TestFunc()
    {
    	cout << "Hallo" << endl;
    }
    
    int main()
    {
    	TimerFunc(TestFunc(), 15);
    	return 0;
    }
    

    So was will ich hier machen?
    Ich möchte gerne eine Funktion haben, die mir eine angegebene andere Funktion aufruft und dies alle 15ms wiederholt!
    Es wird also 1mal definiert und dann folgt der Aufruf alle 15ms erneut.

    Ich hab schon verschiedene Dinge versucht doch immer erfolglos!
    Versuch 1:
    Immer einen Zeitvergleich durchführen! Heißt also überprüfen ob zwischen dem letzten Aufruf 15ms vergangen sind, wenn ja Funktions wird aufgerufen, wenn nicht wird die selbe Funktion erneut aufgerufen und wieder überprüft... Aus performancesicht natürlich schrecklich! Da nix gemacht wird aber letztendlich viel passiert :p
    Habe auch ein Sleep probiert, klappt zwar gut aber dann "schläft" ja auch der Rest meiner Anwendung was auch keine Option ist!

    Gibt es da eine vernüftige Lösung?

    MfG



  • Schau mal hier rein (nur für Windows):
    http://www.c-plusplus.net/forum/289963?highlight=timer



  • In Pseudocode etwa so:

    while true
      get time;
      execute funtion
      calculate sleep time
      set alarm clock
      sleep
    


  • Funktion in eigenem Trhead starten - läuft dann unabhängig vom eigentlichen
    Hauptprogramm, das dann nicht mehr schläft. Da gibt es aber sicherlich nur
    Betriebssystemspezifische Lösungen z. B lpthread unter Linux und bei Windows - keine Ahnung



  • In Windows mit der WinAPI ...!

    Ab dem C11 standart sind thread möglich.. !?


Log in to reply