Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Cria uma fila de trabalho que é garantida para serializar itens de trabalho. A fila de trabalho serial encapsula uma fila de trabalho multithreaded existente. A fila de trabalho serial impõe uma ordem de execução inicial e inicial (FIFO).
Sintaxe
HRESULT MFAllocateSerialWorkQueue(
[in] DWORD dwWorkQueue,
[out] DWORD *pdwWorkQueue
);
Parâmetros
[in] dwWorkQueue
O identificador de uma fila de trabalho existente. Deve ser uma fila multithread ou outra fila de trabalho serial. Qualquer uma das seguintes opções pode ser usada:
- A fila de trabalho padrão (MFASYNC_CALLBACK_QUEUE_STANDARD)
- A fila multithreaded da plataforma (MFASYNC_CALLBACK_QUEUE_MULTITHREADED)
- Uma fila multithread retornada pela função MFLockSharedWorkQueue .
- Uma fila serial criada pela função MFAllocateSerialWorkQueue .
[out] pdwWorkQueue
Recebe um identificador para a nova fila de trabalho serial. Use esse identificador ao enfileirar itens de trabalho.
Valor de retorno
Essa função pode retornar um desses valores.
| Código de retorno | Description |
|---|---|
|
A função foi bem-sucedida. |
|
O aplicativo excedeu o número máximo de filas de trabalho. |
|
O aplicativo não chamou MFStartup ou o aplicativo já chamou MFShutdown. |
Observações
Quando terminar de usar a fila de trabalho, chame MFUnlockWorkQueue.
Filas multithreaded usam um pool de threads, o que pode reduzir o número total de threads no pipeline. No entanto, eles não serializam itens de trabalho. Uma fila de trabalho serial permite que o aplicativo obtenha os benefícios do pool de threads, sem a necessidade de executar a serialização manual de seus próprios itens de trabalho.
Modo de Resposta
Uma fila de serializadores também pode funcionar no modo de "resposta". Se o método IMFAsyncCallback::GetParameters do chamador retornar o sinalizador MFASYNC_REPLY_CALLBACK , a fila do serializador não avançará automaticamente para o próximo item de trabalho. Em vez disso, a fila aguarda uma resposta do chamador. O chamador sinaliza a resposta invocando o objeto de resultado assíncrono que a fila de trabalho passa para o método Invoke . O código a seguir ilustra como o chamador sinaliza a fila de trabalho.HRESULT CCallback::Invoke(IMFAsyncResult *pResult)
{
DoSomeWork();
// Reply to the work queue that you are done.
MFInvokeCallback(pResult);
// Note: This call to MFInvokeCallback does not have to occur inside the
// Invoke method. You could call MFInvokeCallback at a later time.
return S_OK;
}
HRESULT CCallback::GetParameters(DWORD *pdwFlags, DWORD *pdwQueue)
{
*pdwFlags = MFASYNC_REPLY_CALLBACK;
*pdwQueue = m_QueueId;
return S_OK;
}
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Windows 8 [aplicativos da área de trabalho | Aplicativos UWP] |
| Servidor mínimo compatível | Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP] |
| da Plataforma de Destino |
Windows |
| Header | mfapi.h |
| Library | Mfplat.lib |
| de DLL |
Mfplat.dll |