Condividi tramite


Funzione DequeueUmsCompletionListItems (winbase.h)

Recupera i thread di lavoro in modalità utente (UMS) dall'elenco di completamento UMS specificato.

Avviso

A partire da Windows 11, la pianificazione in modalità utente non è supportata. Tutte le chiamate hanno esito negativo con l'errore ERROR_NOT_SUPPORTED.

Sintassi

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

Parametri

[in] UmsCompletionList

Puntatore all'elenco di completamento da cui recuperare i thread di lavoro.

[in] WaitTimeOut

Intervallo di timeout per l'operazione di recupero, in millisecondi. La funzione restituisce se l'intervallo viene trascorso, anche se nessun thread di lavoro viene accodato all'elenco di completamento.

Se il parametro WaitTimeOut è zero, l'elenco di completamento viene controllato per i thread di lavoro disponibili senza attendere che i thread di lavoro diventino disponibili. Se il parametro WaitTimeOut è INFINITE, l'intervallo di timeout della funzione non scade mai. Questa opzione non è tuttavia consigliata, perché causa il blocco della funzione fino a quando non diventano disponibili uno o più thread di lavoro.

[out] UmsThreadList

Puntatore a una variabile UMS_CONTEXT. In output, questo parametro riceve un puntatore al primo contesto del thread UMS in un elenco di contesti di thread UMS.

Se non sono disponibili thread di lavoro prima del timeout specificato dal parametro WaitTimeOut , questo parametro è impostato su NULL.

Valore restituito

Se la funzione ha esito positivo, restituisce un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError. I valori di errore possibili includono quanto segue.

Codice restituito Descrizione
ERROR_TIMEOUT
Nessun thread è diventato disponibile prima che l'intervallo di timeout specificato sia trascorso.
ERROR_NOT_SUPPORTED
UMS non è supportato.

Commenti

Il sistema accoda un thread di lavoro UMS a un elenco di completamento quando il thread di lavoro viene creato o quando un thread di lavoro bloccato in precedenza diventa sbloccato. La funzione DequeueUmsCompletionListItems recupera un puntatore a un elenco di tutti i contesti di thread nell'elenco di completamento specificato. La funzione GetNextUmsListItem può essere usata per visualizzare i contesti del thread UMS dall'elenco nella coda del thread pronto dell'utilità di pianificazione. L'utilità di pianificazione è responsabile della selezione dei thread da eseguire in base alle priorità scelte dall'applicazione.

Non eseguire thread UMS direttamente dall'elenco fornito da DequeueUmsCompletionListItems oppure eseguire un thread trasferito dall'elenco alla coda del thread pronto prima che l'elenco sia completamente vuoto. Ciò può causare un comportamento imprevedibile nell'applicazione.

Se più chiamanti tentano di recuperare i thread da un elenco di completamento condiviso, solo il primo chiamante recupera i thread. Per i chiamanti successivi, la funzione DequeueUmsCompletionListItems restituisce esito positivo, ma il parametro UmsThreadList è impostato su NULL.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 (solo a 64 bit) [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll
Set di API api-ms-win-core-ums-l1-1-0 (introdotta in Windows 7)

Vedi anche

GetNextUmsListItem