Timer events

Gast #4590902
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?
#4590929
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
(Firma: Privat) #4590933
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
#4591253
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren