Função DequeueUmsCompletionListItems (winbase.h)
Recupera threads de trabalho ums (agendamento de modo de usuário) da lista de conclusão de UMS especificada.
Aviso
A partir de Windows 11, não há suporte para o agendamento no modo de usuário. Todas as chamadas falham com o erro ERROR_NOT_SUPPORTED
.
Sintaxe
BOOL DequeueUmsCompletionListItems(
[in] PUMS_COMPLETION_LIST UmsCompletionList,
[in] DWORD WaitTimeOut,
[out] PUMS_CONTEXT *UmsThreadList
);
Parâmetros
[in] UmsCompletionList
Um ponteiro para a lista de conclusão da qual recuperar threads de trabalho.
[in] WaitTimeOut
O intervalo de tempo limite para a operação de recuperação, em milissegundos. A função retornará se o intervalo decorrer, mesmo que nenhum thread de trabalho esteja na fila para a lista de conclusão.
Se o parâmetro WaitTimeOut for zero, a lista de conclusão será verificada quanto aos threads de trabalho disponíveis sem esperar que os threads de trabalho fiquem disponíveis. Se o parâmetro WaitTimeOut for INFINITE, o intervalo de tempo limite da função nunca será decorrido. No entanto, isso não é recomendado porque faz com que a função seja bloqueada até que um ou mais threads de trabalho fiquem disponíveis.
[out] UmsThreadList
Um ponteiro para uma variável UMS_CONTEXT. Na saída, esse parâmetro recebe um ponteiro para o primeiro contexto de thread UMS em uma lista de contextos de thread UMS.
Se nenhum thread de trabalho estiver disponível antes do tempo limite especificado pelo parâmetro WaitTimeOut , esse parâmetro será definido como NULL.
Retornar valor
Se a função for bem-sucedida, ela retornará um valor diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. Os valores de erro possíveis incluem o seguinte.
Código de retorno | Descrição |
---|---|
|
Nenhum thread ficou disponível antes do intervalo de tempo limite especificado ter decorrido. |
|
Não há suporte para UMS. |
Comentários
O sistema enfileira um thread de trabalho umS para uma lista de conclusão quando o thread de trabalho é criado ou quando um thread de trabalho bloqueado anteriormente é desbloqueado. A função DequeueUmsCompletionListItems recupera um ponteiro para uma lista de todos os contextos de thread na lista de conclusão especificada. A função GetNextUmsListItem pode ser usada para colocar os contextos de thread UMS fora da lista na própria fila de threads pronta do agendador. O agendador é responsável por selecionar threads a serem executados com base nas prioridades escolhidas pelo aplicativo.
Não execute threads UMS diretamente da lista fornecida por DequeueUmsCompletionListItems ou execute um thread transferido da lista para a fila de threads pronta antes que a lista esteja completamente vazia. Isso pode causar um comportamento imprevisível no aplicativo.
Se mais de um chamador tentar recuperar threads de uma lista de conclusão compartilhada, somente o primeiro chamador recuperará os threads. Para chamadores subsequentes, a função DequeueUmsCompletionListItems retorna êxito, mas o parâmetro UmsThreadList é definido como NULL.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 (somente 64 bits) [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (incluir Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |
Conjunto de APIs | api-ms-win-core-ums-l1-1-0 (introduzido no Windows 7) |