XAsyncBlock
비동기 호출의 수명을 나타냅니다.
구문
typedef struct XAsyncBlock {
XTaskQueueHandle queue;
void* context;
XAsyncCompletionRoutine* callback;
unsigned internal[sizeof ( void* ) * 4];
} XAsyncBlock
멤버
queue
형식: XTaskQueueHandle
선택 사항. 비동기 호출의 작업 큐와 선택적으로 callback에 지정된 완료 콜백에 대한 핸들입니다. Null로 설정하면 비동기 호출이 프로세스 작업 큐를 사용하려고 합니다. 프로세스 작업 큐도 null로 설정되면 비동기 호출이 실패하고 E_NO_TASK_QUEUE
을 반환합니다.
context
형식: void*
선택 사항. 완료 콜백에 전달되는 정보에 대한 포인터입니다.
callback
형식: XAsyncCompletionRoutine*
호출이 완료될 때 호출되는 선택적인 콜백입니다.
internal
형식: unsigned char[sizeof(void*) * 4]
내부 용도로 예약되어 있습니다.
설명
XAsyncBlock
구조는 비동기 호출의 수명을 나타냅니다.
XAsyncBlock
을 사용하여 먼저 비동기 호출을 실행하고 해당 호출에 선택적 완료 콜백을 제공할 수 있습니다. 그런 다음, XAsyncBlock
을 해당 특정 호출의 핸들로 사용할 수 있습니다. 비동기식 호출을 실행하면 실행을 위해 작업 큐로 제출됩니다. 작업 큐를 사용하면 비동기 호출을 실행하는 스레드와 완료 콜백을 호출하는 스레드(지정된 경우)를 확인할 수 있습니다. 비동기 호출을 실행하는 작업 큐를 만들 필요는 없습니다. 작업 큐가 큐에 지정되지 않은 경우 프로세스 작업 큐가 기본적으로 사용됩니다. 일반적으로 프로세스 작업 큐는 시스템 스레드 풀로 비동기 호출을 발송하며, 해당 스레드가 경고 가능한 경우 비동기 호출을 시작한 스레드에서 완료 콜백이 호출됩니다. 작업 큐의 발송 모드에 대한 자세한 내용은 비동기 작업 큐 디자인을 참조하세요.
참고 항목
비동기 호출을 호출한 후 해당 비동기 호출에 대한 XAsyncBlock
에서 어떤 매개 변수도 수정하지 마세요.
완료 콜백
필요에 따라 콜백에서 콜백 함수에 대한 포인터를 지정하여 비동기 호출에 대한 완료 콜백를 제공할 수 있습니다. 완료 콜백은 비동기 호출을 완료한 후 실행되는 콜백 함수입니다. 완료 콜백에 대한 정보를 나타내는 컨텍스트에서 포인터를 지정하여 컨텍스트 관련 데이터를 완료 콜백에 제공할 수 있습니다.
콜백에서 완료 콜백을 지정하지 않은 경우 XAsyncGetStatus 함수를 사용하여 비동기 호출이 완료되었는지 주기적으로 확인한 다음, 필요에 따라 XAsyncGetResult 및 XAsyncGetResultSize를 사용하여 완료된 작업의 결과를 가져올 수 있습니다.
완료 콜백에 대한 자세한 내용은 XAsyncCompletionRoutine을 참조하세요.
XAsyncBlock 구현
XAsyncProvider에서 XAsyncBlock
를 사용하여 사용자의 비동기 기능을 구현한 다음, XTaskQueue 함수를 사용하여 해당 기능을 호출할 수 있습니다. 또한 또 다른 도우미 함수인 XAsyncWork로 지정된 콜백 함수를 실행 및 추적하기 위해 내부적으로 XAsyncProvider
를 사용하는 도우미 함수인 XAsyncRun을 호출하여 비동기 호출을 실행할 수도 있습니다.
XAsyncProvider
및 XAsyncBlock
를 사용하여 비동기 기능을 구현하는 방법에 대한 자세한 내용은 비동기 프로그래밍 모델을 참조하세요.
비동기 호출의 수명 동안에는 XAsyncBlock
이 메모리에 남아 있어야 합니다. 그러나 XAsyncBlock
이 동적으로 할당되면 비동기 호출에 대한 완료 콜백 내에서 삭제해도 안전합니다.
요구 사항
헤더: XAsync.h
지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔