> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XAsyncBlock

> XAsyncBlock

# XAsyncBlock

비동기 호출의 수명을 나타냅니다.

## 구문

```cpp theme={null}
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\*](/reference/system/xasync/functions/xasynccompletionroutine)

호출이 완료될 때 호출될 선택적 콜백입니다.

*internal*\
형식: unsigned char\[sizeof(void\*) \* 4]

내부용으로 예약되어 있습니다.

## 설명

`XAsyncBlock` 구조체는 비동기 호출의 수명을 나타냅니다. `XAsyncBlock`을 사용하여 먼저 비동기 호출을 호출하고 해당 호출에 대한 선택적 완료 콜백을 제공합니다. 그런 다음 `XAsyncBlock`을 특정 호출의 호출에 대한 핸들로 사용할 수 있습니다. 비동기 호출을 호출하면 실행을 위해 작업 큐에 제출됩니다. 작업 큐를 사용하면 어떤 스레드가 비동기 호출을 실행하고 완료 콜백이 지정된 경우 어떤 스레드가 완료 콜백을 호출할지 결정할 수 있습니다. 비동기 호출을 호출하기 위해 작업 큐를 만들 필요는 없습니다. *queue*에 작업 큐가 지정되지 않은 경우 기본적으로 프로세스 작업 큐가 사용됩니다. 일반적으로 프로세스 작업 큐는 시스템 스레드 풀에 비동기 호출을 디스패치하며 완료 콜백은 해당 스레드가 alertable 상태일 때 비동기 호출을 시작한 스레드에서 호출됩니다. 작업 큐의 디스패치 모드에 대한 자세한 내용은 [비동기 작업 큐 디자인](/build/core-features/common/async/async-task-queue-design)을 참조하세요.

<Note>비동기 호출을 호출한 후에는 해당 비동기 호출에 대한 `XAsyncBlock`의 매개 변수를 수정하지 마세요.</Note>

### 완료 콜백

비동기 호출에 대한 *완료 콜백*을 제공하기 위해 *callback*에 콜백 함수에 대한 포인터를 선택적으로 지정할 수 있습니다. 완료 콜백은 비동기 호출이 완료된 후 실행되는 콜백 함수입니다. 완료 콜백에 대한 정보를 나타내는 *context*에 포인터를 지정하여 완료 콜백에 컨텍스트별 데이터를 제공할 수 있습니다.

*callback*에 완료 콜백을 지정하지 않으면 [XAsyncGetStatus](/reference/system/xasync/functions/xasyncgetstatus) 함수를 사용하여 비동기 호출이 완료되었는지 주기적으로 확인한 다음 필요에 따라 [XAsyncGetResult](/reference/system/xasyncprovider/functions/xasyncgetresult) 및 [XAsyncGetResultSize](/reference/system/xasync/functions/xasyncgetresultsize)를 사용하여 완료된 작업에서 결과를 가져올 수 있습니다.

완료 콜백에 대한 자세한 내용은 [XAsyncCompletionRoutine](/reference/system/xasync/functions/xasynccompletionroutine)을 참조하세요.

### XAsyncBlock 구현

[XAsyncProvider](/reference/system/xasyncprovider/xasyncprovider_members)를 사용하여 `XAsyncBlock`으로 자체 비동기 기능을 구현한 다음 [XTaskQueue](/reference/system/xtaskqueue/xtaskqueue_members) 함수를 사용하여 해당 기능을 호출할 수 있습니다. 또한 [XAsyncRun](/reference/system/xasync/functions/xasyncrun)을 호출하여 비동기 호출을 호출할 수 있습니다. 이는 [XAsyncWork](/reference/system/xasync/functions/xasyncwork)에서 지정한 콜백 함수를 실행하고 추적하기 위해 내부적으로 `XAsyncProvider`를 사용하는 도우미 함수입니다. `XAsyncProvider` 및 `XAsyncBlock`을 사용하여 자체 비동기 기능을 구현하는 것에 대한 자세한 내용은 [비동기 프로그래밍 모델](/build/core-features/common/async/async-programming-model)을 참조하세요.

`XAsyncBlock`은 비동기 호출의 수명 동안 메모리에 남아 있어야 합니다. 그러나 `XAsyncBlock`이 동적으로 할당된 경우 비동기 호출의 완료 콜백 내에서 안전하게 삭제할 수 있습니다.

## 요구 사항

**헤더:** XAsync.h

**지원되는 플랫폼:** Windows, XBOX One 제품군 콘솔 및 XBOX Series 콘솔

## 개념 설명서

* [비동기 작업 설정](/build/core-features/common/async/async-libraries/async-library-xasync-example-setup-async-task)
* [XAsync 라이브러리 개요](/build/core-features/common/async/async-libraries/async-library-xasync)
* [XAsyncProvider 라이브러리 개요](/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [XTaskQueue 라이브러리 개요](/build/core-features/common/async/async-libraries/async-library-xtaskqueue)
* [비동기 프로그래밍 모델](/build/core-features/common/async/async-programming-model)
* [비동기 프로그래밍 설계 목표 및 개선 사항](/build/core-features/common/async/async-whitepaper)
* [초대 보내기](/services/xbox-services/multiplayer/invites/how-to/live-invites-send)

## 함께 보기

[XAsync 멤버](/reference/system/xasync/xasync_members)\
[XAsyncProvider 멤버](/reference/system/xasyncprovider/xasyncprovider_members)\
[비동기 프로그래밍 모델](/build/core-features/common/async/async-programming-model)


## Related topics

- [PlayFab Unified SDK에서 비동기 호출 수행](/ko/services/playfab/sdks/unified-sdk/async-model.md)
- [비동기 호출 만들기](/ko/services/playfab/sdks/c/async.md)
- [XSAPI C API에서 비동기 호출 수행](/ko/services/xbox-services/fundamentals/xbox-services-api/live-flatc-async-patterns.md)
- [PFGroupsBlockEntityAsync](/ko/services/playfab/api-references/c/pfgroups/functions/pfgroupsblockentityasync.md)
- [PFGroupsListGroupBlocksAsync](/ko/services/playfab/api-references/c/pfgroups/functions/pfgroupslistgroupblocksasync.md)
