Функция
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 |
Функция повторного вызова выстраивает очередь поток, который никогда не завершает свою работу. Этот флажок должен использоваться только для коротких задач, или он может воздействовать на другие рабочие процессы таймера.
|
|
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 |
Нет |
Замечания по платформе |
Не имеется |