Рефераты | Рефераты по информатике, программированию | Эффективная многопоточность | страница реферата 18 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Рассмотрим параметры этой функции. Первый параметр возвращает хендл таймера, который можно использовать для вызова функций изменения таймера или его удаления (о них позже). Второй параметр – хендл очереди, созданной функцией CreateTimerQueue. В качестве него можно указать нулевое значение. В этом случае по умолчанию таймер будет добавлен к объекту "очередь таймеров". Третий параметр – адрес функции, которая будет вызвана при переходе таймера в сигнальное состояние. Вот ее прототип:

    VOID CALLBACK WaitOrTimerCallback(

      PVOID lpParameter,        // произвольный параметр

      BOOLEAN TimerOrWaitFired  // причина вызова

    );

    Произвольный параметр для нее указывается в функции CreateTimerQueueTimer четвертым параметром. Параметр TimerOrWaitFired для таймеров всегда равен TRUE.

    Пятый параметр определяет, сколько времени в миллисекундах пройдет до первого вызова функции WaitOrTimerCallback. Если указать 0, то эта функция будет вызвана практически сразу (примерно так же быстро, как и в случае QueueUserWorkItem).

    Шестой параметр задает период вызова пользовательской функции. В качестве этого параметра можно указать нулевое значение, тогда функция WaitOrTimerCallback будет вызвана только один раз.

    В качестве флагов функции CreateTimerQueueTimer можно указывать все флаги из таблицы 2 и два новых:

    Константа

    Значение

    Описание

    WT_EXECUTEINTIMERTHREAD

    0x20

    Пользовательская функция вызывается в потоке таймера

    WT_EXECUTEONLYONCE

    8

    Пользовательская функция вызывается только один раз

    Таблица 6. Флаги функции CreateTimerQueueTimer.

    Если ваша функция WaitOrTimerCallback очень быстро отрабатывает, а количество запросов невелико – лучше всего указать флаг WT_EXECUTEINTIMERTHREAD. В этой ситуации функция будет вызвана в потоке, ожидающем таймера. Будьте осторожны – длительная блокировка пользовательской функции приведет к тому, что ожидающий поток не сможет обрабатывать приходящие запросы.

    При указании флага WT_EXECUTEONLYONCE таймер будет установлен в сигнальное состояние только один раз.

    Если вам больше не нужен таймер, его можно удалить из очереди с помощью функции DeleteTimerQueueTimer.

    BOOL DeleteTimerQueueTimer(


    Рекомендуем скачать другие рефераты по теме: реферати, инновационная деятельность.



    Предыдущая страница реферата | 11  12  13  14  15  16  17  18  19  20  21 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •