패스잇
모바일 개발 · 심화

Swift의 async/await 및 Actor를 활용하여 고도로 동시성 높은 네트워크 요청 시스템을 설계할 때, 스레드 안전성을 보장하고 리소스 사용을 최적화하며, 특히 상호 의존적인 요청 처리 및 취소 메커니즘을 어떻게 구현할 것인지 구체적으로 설명하시오.

힌트 · TaskGroup을 통한 병렬 처리 및 의존성 관리, Task.cancel()을 이용한 취소 전파, Actor의 isolation 및 reentrancy 특성을 고려합니다.

async/awaitActorDispatchGroupTaskGroupContinuation

모범답안

네, 고도로 동시성 높은 네트워크 요청 시스템을 설계할 때 스레드 안전성, 리소스 최적화, 상호 의존적인 요청 처리 및 취소 메커니즘을 구현하는 방법에 대해 설명드리겠습니다.

async/await와 Actor를 활용하면 스레드 안전성을 확보하면서 비동기 코드를 간결하게 작성할 수 있습니다. Actor는 상태를 캡슐화하고 동시 접근을 직렬화하여 데이터 경쟁을 방지합니다.

상호 의존적인 요청 처리는 TaskGroup을 사용하여 관리합니다. TaskGroup 내에서 여러 개의 비동기 작업을 병렬로 실행하고, 각 작업 간의 의존성을 설정하여 순서를 제어할 수 있습니다. 예를 들어, 첫 번째 요청이 완료된 후에만 두 번째 요청을 시작하도록 할 수 있습니다.

취소 메커니즘은 Task.cancel()을 통해 구현합니다. TaskGroup 내의 작업 중 하나가 취소되면, TaskGroup 전체를 취소하여 관련된 모든 작업이 중단되도록 합니다. 이를 통해 리소스 낭비를 막고, 사용자 경험을 개선할 수 있습니다.

리소스 최적화를 위해 불필요한 작업 생성을 줄이고, 재사용 가능한 객체를 활용합니다. 또한, 네트워크 요청 시 타임아웃을 설정하여 응답이 없는 요청이 무한정 대기하는 것을 방지합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 iOS / Swift 면접 질문

← iOS / Swift 면접 질문 전체 보기