Dobrý den,
následující kus kódu má vypisovat každou sekundu jeden řádek. Bohužel, pokud konstantu SYNC_FREQ_DEFAULT zvednu nad urcitou hranici (50, mozna i driv), vypis se zpomali o cca 50%.
#define SYNC_FREQ_DEFAULT 100 /* 100 Hz */
double machine_freq;
double sync_freq;
void alarm_handler(int data)
{
static int alarm_calls=0;
alarm_calls++;
if (alarm_calls == (int)sync_freq) {
printf("%d calls -> 1s\n", (int)sync_freq);
alarm_calls=0;
}
}
VOID CALLBACK t0_callback(HWND stejnejetonull, UINT message, UINT event_id, DWORD dword_timer)
{
alarm_handler(0);
}
int WINAPI WinMain(HINSTANCE curr, HINSTANCE prev, LPSTR cmdline, int n_show)
{
MSG msg;
UINT timer0;
init_blabla();
sync_freq=SYNC_FREQ_DEFAULT;
printf("wait == %d ms\n", 1000/(int)sync_freq);
timer0=SetTimer(NULL, 0, 1000/(int)sync_freq, t0_callback);
while (GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
Buď je to způsobeno nějakou úplně blbou chybou, kterou nevidím, nebo už nevím.
S WinAPI teprve začínám. Pokud jsem pod Linuxovými systémy používal setitimer() a SIGALARM, všechno bylo v pořádku (a program dokonce něco dělal).
PS snad nevadí, že jsem psal na builder.cz, přijde mi tam celkem mrtvo - články nevycházejí..
Fórum › C / C++
WinAPI timer - 50% spoždění?
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 83 hostů
Podobná vlákna
Timer — založil
Moderátoři diskuze