Ereignise alle x Sekunden durchführen

Gast #1827172
Lesenswert?
• ▲
▼
Hi,

ich habe folgendes Problem. Ich möchte bestimmte Ereignisse alle x 
Sekunden ausführen.

Zum Beispiel

Ereignis A alle x ms
Ereignis B alle y s
Ereignis C ...

Das löse ich bisher so, dass ich einen Timer habe, der in einer 32 Bit 
Variable Millisekunden hoch zählt. Anschliesend vergleiche ich in einer 
Endlosschleife:
1
if( ms-EreignisA >= 1000) {
2
   EreignisA=ms;
3
   ...
4
}

Gibt es dafür noch elegantere Lösungen?
#1827214
Lesenswert?
• ▲
▼
Wiederholer schrieb:

>
1
> if( ms-EreignisA >= 1000) {
2
>    EreignisA=ms;
3
>    ...
4
> }
5
>
>
> Gibt es dafür noch elegantere Lösungen?

Was findest du daran unelegant?

eine Alternative wäre vielleicht noch
1
   performChecks = 0;
2
   cli();
3
   if( ms != ms_alt )    // ist eine Millisekunde um?
4
   {
5
     ms_alt = ms;
6
     performChecks = 1;
7
   }
8
   sei();
9

10
   if( performChecks )  // Zeitauswertungen nur jede volle Millisekunde
11
   {
12
     EreignisA--;
13
     if( EreignisA == 0 )           // ist die Zeit für A rum?
14
     {
15
       EreignisA = TIME_FOR_A;
16
       ....
17
     }
18

19

20
     EreignisB--;
21
     if( EreignisB == 0 )           // ist die Zeit für B rum?
22
     {
23
       EreignisB = TIME_FOR_B;
24
       ....
25
     }
26

27
     .....
28
   }

Dann werden deine Zeit-Ereignisse auch nur dann bearbeitet, wenn eine 
Millisekunde um ist und nicht ständig. Und du hast auch noch die 
Möglichkeit die Zeit für ein Ereignis auch einmal abzukürzen bzw. zu 
verlängern, indem du EreignisA direkt manipulierst.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.