XAsyncBlock
Representa o tempo de vida de uma chamada assíncrona.Sintaxe
Membros
queueTipo: XTaskQueueHandle Opcional. O identificador da fila de tarefas para a chamada assíncrona e, opcionalmente, para o retorno de chamada de conclusão especificado em callback. Se definido como nulo, a chamada assíncrona tentará usar a fila de tarefas do processo. Se a fila de tarefas do processo também estiver definida como nula, a chamada assíncrona falhará e retornará
E_NO_TASK_QUEUE.
contextTipo: void* Opcional. Um ponteiro para informações passadas ao retorno de chamada de conclusão. callback
Tipo: XAsyncCompletionRoutine* Retorno de chamada opcional que será invocado quando a chamada for concluída. internal
Tipo: unsigned char[sizeof(void*) * 4] Reservado para uso interno.
Comentários
A estruturaXAsyncBlock representa o tempo de vida de uma chamada assíncrona. Você usa XAsyncBlock primeiro para invocar uma chamada assíncrona e fornecer um retorno de chamada de conclusão opcional para essa chamada. Depois disso, você pode usar o XAsyncBlock como um identificador para a invocação dessa chamada específica. Quando você invoca uma chamada assíncrona, ela é enviada a uma fila de tarefas para execução. Uma fila de tarefas permite determinar qual thread executa a chamada assíncrona e qual thread invoca o retorno de chamada de conclusão, se houver um especificado. Não é necessário criar uma fila de tarefas para fazer chamadas assíncronas. Se uma fila de tarefas não for especificada em queue, a fila de tarefas do processo será usada por padrão. Normalmente, a fila de tarefas do processo despacha chamadas assíncronas para o pool de threads do sistema, e os retornos de chamada de conclusão são invocados no thread que iniciou a chamada assíncrona quando esse thread está em estado de alerta. Para obter mais informações sobre os modos de despacho das filas de tarefas, consulte Design da fila de tarefas assíncronas.
Depois de invocar uma chamada assíncrona, não modifique nenhum dos parâmetros no
XAsyncBlock dessa chamada assíncrona.Retornos de chamada de conclusão
Opcionalmente, você pode especificar um ponteiro para uma função de retorno de chamada em callback para fornecer um retorno de chamada de conclusão para uma chamada assíncrona. Um retorno de chamada de conclusão é uma função de retorno de chamada executada após a conclusão de uma chamada assíncrona. Você pode fornecer dados específicos do contexto ao retorno de chamada de conclusão especificando em context um ponteiro que represente as informações para o retorno de chamada de conclusão. Se você não especificar um retorno de chamada de conclusão em callback, poderá verificar periodicamente se a chamada assíncrona foi concluída usando a função XAsyncGetStatus e, em seguida, usar XAsyncGetResult e XAsyncGetResultSize conforme necessário para obter os resultados da tarefa concluída. Para obter mais informações sobre retornos de chamada de conclusão, consulte XAsyncCompletionRoutine.Implementando XAsyncBlock
Você pode usar XAsyncProvider para implementar sua própria funcionalidade assíncrona usandoXAsyncBlock e, em seguida, invocar essa funcionalidade usando funções de XTaskQueue. Você também pode fazer chamadas assíncronas invocando XAsyncRun, uma função auxiliar que usa internamente XAsyncProvider para executar e acompanhar a função de retorno de chamada especificada por XAsyncWork, outra função auxiliar. Para obter mais informações sobre como implementar sua própria funcionalidade assíncrona usando XAsyncProvider e XAsyncBlock, consulte Modelo de programação assíncrona.
Um XAsyncBlock deve permanecer na memória durante todo o tempo de vida de uma chamada assíncrona. No entanto, se o XAsyncBlock for alocado dinamicamente, ele poderá ser excluído com segurança dentro do retorno de chamada de conclusão de uma chamada assíncrona.
Requisitos
Cabeçalho: XAsync.h Plataformas com suporte: Windows, consoles da família XBOX One e consoles XBOX SeriesDocumentação conceitual
- Configurar tarefa assíncrona
- Visão geral da biblioteca XAsync
- Visão geral da biblioteca XAsyncProvider
- Visão geral da biblioteca XTaskQueue
- Modelo de programação assíncrona
- Metas de design e melhorias da programação assíncrona
- Enviando convites
Confira também
Membros de XAsyncMembros de XAsyncProvider
Modelo de programação assíncrona
