Как я могу реализовать управляемые временем задачи в C на платформах win32? - PullRequest
1 голос
/ 30 января 2011

Я новичок в C и пытаюсь найти некоторые фрагменты кода, чтобы выяснить, как задачи, запускаемые по времени, могут быть реализованы в C. У меня есть две функции, время выполнения которых может варьироваться от 50 до 200 мс.Я хочу передать эти функции рабочему потоку, который должен запускаться каждые 500 мс.Есть ли в C (win32-platform) простой способ (такой как java's TimerTask) реализовать задачи таймера со стандартными библиотеками времени выполнения?

Ответы [ 3 ]

1 голос
/ 30 января 2011

Используя c, вы можете использовать win32 SetTimer Функция

1 голос
/ 24 февраля 2011

Используйте CreateTimerQueueTimer, чтобы окна вызывали вашу функцию каждые 500 мс:

void CALLBACK timer_function(void* /*lpParameter*/,BOOLEAN /*TimerOrWaitFired*/)
{
    /* do stuff */
}


HANDLE timer_handle;

void start_timer()
{
    void* parameter; /* passed as lpParameter of timer_function */
    DWORD milliseconds_before_first_call=100; /* execute after 100ms */
    DWORD milliseconds_between_calls=500; /* and then every 500ms */
    CreateTimerQueueTimer(&timer_handle,NULL,timer_function,parameter,
        milliseconds_before_first_call,milliseconds_between_calls,
        WT_EXECUTELONGFUNCTION /* the function takes a while, and may block */
    );
}
0 голосов
/ 30 января 2011

Посмотрите на TimerQueue связанные функции:

http://msdn.microsoft.com/en-us/library/ms682483(v=vs.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...