Timer (multithreading?)

Tags:    c++

Hej. Jeg er ved at lave en simpel timerklasse i win32, men jeg er løbet ind i et problem.
Jeg har brug for noget præcision så jeg bruger Windows multimedia timer. Dette kræver dog at den funktion der kaldes ved timerens udløb er static. Dette har jeg forsøgt omgået, ligesom en del artikler på Internettet, ved at lade denne statiske funktion kalde den egentlige funktion. Problemet er at hvis en af disse funktioner ikke returnerer med det samme, måske fordi de venter på input, så blokerer den for alle andre timere!

Skal man selv lave noget multithreading, eller er der andet der kan gøres?

På forhånd tak.



Jeg tvivler på at der er andet at gøre end at sikre dig at de kaldte funktioner returnerer "øjeblikkeligt", eller bruge multitasking.

Hvis du vælger multitasking har du et nyt sæt af problemer. Hvis dine timere kalder funktioner i andre tråde har du problemer med at de kaldte funktioner "overhaler" lokale funktioner eller bliver overhalet.
En anden løsning er at have det hele til at køre i tråde og lade hver tråd håndtere sine egne timere.
Men du vil altid have synkroniserings problemer mellem tråde.



Hej Kristian !!!
Hvad er præcision i denne sammen hæng ?
Med Venlig Hilsen
Janus S. Andersen



Med præcision mener jeg at den skal kaldes præcist:D
Da jeg bl.a. vil bruge den som "udløser" til en sekundviser, skal den helst aktiveres hvert sekund. Det duer ikke hvis den springer hvert 100 sekund over.



Hej Kristian !!!
Du kan bruge SetTimer den har en maks. hastighed på 55 ms. Se evt. http://www.codeproject.com/info/search.asp?cats=2&cats=3&searchkw=SetTimer&Submit1=Search&author=&sd=15+Nov+1999&ed=8+Jun+2006

Der er mange gode link til SetTimer.

Med Venlig Hilsen
Janus S. Andersen



t