Forum: PC-Programmierung Timer events


von Thorsten (Gast)


Lesenswert?

Hallo, bei der Microcontrollerprogrammierung hab ich gelernt die 
Eventroutine so kurz wie möglich zu halten z.b. einfach ein Flag setzen 
und dann in der Mainroutine das Flag mittels pollig abzufragen. Beim 
Aufbau auf einem Windowssystem bin ich unschlüssig, wie es gut ist.

Meine Idee:

Timer event method:
Flag setzen

Main ruft eine Methode in einem eigenen Thread auf mit while Schleife 
und füht die Aktionen aus.

- Ist das der normle Weg auf einem Windows OS System?

Bei einem Mikrocontroller hab verschiedene Zeiten durch den Timerevent 
abgeleitet.

- Sollte ich bei einem Windows OS auch darauf achten oder einfach so 
viele verschiedene Timer erstellen wie benötigt?

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

wenn du keine Threads verwenden willst mag das eine Möglichkeit sein, 
aber ein PC kann natürlich gegenüber einem MC in der gleichen Zeit viel 
mehr machen - als ob das so Sinn macht. Aber eigenlich sollte man 
parallele Aufgaben in eigene Threads auslagern. Das OS kümmert sich dann 
darum das die Aufgaben parallel erledigt werden. Nur so kann ein 
moderner Mulicoreprozessor sinnvoll genutzt werden.

Sascha

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Bei der Windows - API ist es so, daß man eine
Procedur angibt, die beim Timeout angesprungen
bzw. abgearbeitet wird.

SetTimer(Fenster, id, timeout, ProcAdr(Procedur))

wobei id 0 sein kann. Die Procedur sollte 4 Parameter
haben :

Parameter hWnd, uMsg, idEvent, dwTime

von Rolf M. (rmagnus)


Lesenswert?

Thorsten schrieb:
> Hallo, bei der Microcontrollerprogrammierung hab ich gelernt die
> Eventroutine so kurz wie möglich zu halten z.b. einfach ein Flag setzen
> und dann in der Mainroutine das Flag mittels pollig abzufragen.

Wenn du mit "Event" einen Interrupt meinst, ja.

> Beim Aufbau auf einem Windowssystem bin ich unschlüssig, wie es gut ist.
>
> Meine Idee:
>
> Timer event method:
> Flag setzen
>
> Main ruft eine Methode in einem eigenen Thread auf mit while Schleife
> und füht die Aktionen aus.
>
> - Ist das der normle Weg auf einem Windows OS System?

Nein, denn das würde eine konstante CPU-Last von 100% bedeuten. Dein 
Programm muss so geschrieben sein, dass es sich, wenn es gerade nichts 
zu tun hat, schlafen legt. Das Betriebssystem kümmert sich dann darum, 
bei einem Ereignis dein Programm wieder aufzuwecken.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.