Функция QueueUserWorkItem


Функция QueueUserWorkItem ставит в очередь рабочий элемент рабочего потока в пуле потоков.

Синтаксис

BOOL QueueUserWorkItem(
  LPTHREAD_START_ROUTINE Function,  // начальный адрес
  PVOID Context,                    // данные функции
  ULONG Flags                       // рабочие настройки
  );

Параметры

Function

[in] Указатель на определяемую программой функцию повторного вызова типа LPTHREAD_START_ROUTINE, которая будет исполнять код потоком в пуле потоков. Это значение обозначает начальный адрес потока. Эта функция повторного вызова не должна вызвать функцию TerminateThread.

Для получения дополнительной информации, см. описание функции ThreadProc.

Context

[in] Единственное значение параметра, которое должно передаваться в функцию потока.

Flags

[in] Флажки, которые управляют исполнением кода. Этот параметр может состоять из одного или нескольких нижеследующих значений.

 

Значение

Предназначение

WT_EXECUTEDEFAULT

По умолчанию, функция повторного вызова выстраивает очередь рабочего потока не производящего операции ввода-вывода данных (I/O

WT_EXECUTEINIOTHREAD

Функция повторного вызова выстраивает очередь ввода - вывода (I/O) рабочего потока. Этот флажок должен быть использован в случае, если функция будет исполнять код потока, который ждет в состоянии готовности

Функция повторного вызова ставится в очередь как APC. Убедитесь, что повторный ввод адреса завершен, если функция выполняет “тревожную” операцию "занять" (занятие семафора).

WT_EXECUTEINPERSISTENTTHREAD

Функция повторного вызова выстраивает очередь поток, который никогда не завершает свою работу. Этот флажок должен использоваться только для коротких задач, или он может воздействовать на другие рабочие процессы таймера.

Обратите внимание! на то, что теперь нет рабочего потока постоянного в полном смысле слова, несмотря на то, что рабочие потоки не заканчивают работу, если имеются какие-либо ждущие обработки запросы ввода - вывода (I/O).

WT_EXECUTELONGFUNCTION

Функция повторного вызова может выполнять долгое ожидание. Этот флажок помогает системе принять решение, создавать ли ей новый поток.

Возвращаемые значения

Если функция завершается успешно, величина возвращаемого значения - не ноль.

Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получить дополнительные данные об ошибках, вызовите GetLastError.

Замечания

Если функция в DLL поставлена в очередь рабочего потока, убедитесь, что функция завершила исполнение кода прежде, чем DLL выгрузилась.

Чтобы компилировать приложение, которое использует эту функцию, определите макрокоманду _WIN32_WINNT как 0x0500 или позже. Для получения дополнительной информации, см. статью Использование заголовков SDK.

Смотри также

Краткий обзор Процессы и потоки, Функции, используемые процессами и потоками, ThreadProc, Объединение потоков в пул

Размещение и совместимость QueueUserWorkItem

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Нет

Windows Me

Нет

Windows 98

Нет

Windows 95

Нет

Используемая библиотека

Kernel32.lib

Заголовочный файл

 

- объявлено в

Winbase.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz