Поделиться через


Функция DequeueUmsCompletionListItems (winbase.h)

Извлекает рабочие потоки планирования в пользовательском режиме (UMS) из указанного списка завершения UMS.

Предупреждение

С Windows 11 года планирование в пользовательском режиме не поддерживается. Все вызовы завершаются ошибкой ERROR_NOT_SUPPORTED.

Синтаксис

BOOL DequeueUmsCompletionListItems(
  [in]  PUMS_COMPLETION_LIST UmsCompletionList,
  [in]  DWORD                WaitTimeOut,
  [out] PUMS_CONTEXT         *UmsThreadList
);

Параметры

[in] UmsCompletionList

Указатель на список завершения, из которого извлекаются рабочие потоки.

[in] WaitTimeOut

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

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

[out] UmsThreadList

Указатель на переменную UMS_CONTEXT. В выходных данных этот параметр получает указатель на первый контекст потока UMS в списке контекстов потоков UMS.

Если рабочие потоки недоступны до истечения времени ожидания, указанного параметром WaitTimeOut , этот параметр имеет значение NULL.

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

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

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

Код возврата Описание
ERROR_TIMEOUT
Потоки не стали доступны до истечения указанного интервала времени ожидания.
ERROR_NOT_SUPPORTED
UMS не поддерживается.

Комментарии

Система помещает рабочий поток UMS в очередь в список завершения при создании рабочего потока или при разблокировке ранее заблокированного рабочего потока. Функция DequeueUmsCompletionListItems извлекает указатель на список всех контекстов потока в указанном списке завершения. Функцию GetNextUmsListItem можно использовать для вывода контекстов потоков UMS из списка в очередь готовых потоков планировщика. Планировщик отвечает за выбор потоков для запуска на основе приоритетов, выбранных приложением.

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

Если несколько вызывающих абонентов пытаются получить потоки из общего списка завершения, только первый вызывающий объект получает потоки. Для последующих вызывающих абонентов функция DequeueUmsCompletionListItems возвращает успешное выполнение, но параметр UmsThreadList имеет значение NULL.

Требования

Требование Значение
Минимальная версия клиента Windows 7 (только 64-разрядная версия) [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll
Набор API api-ms-win-core-ums-l1-1-0 (представлено в Windows 7)

См. также раздел

GetNextUmsListItem