8. 질문 — async/await의 동작 원리와 함정 (C#)

난이도 상 해설 보기 →
문제

질문 — async/await의 동작 원리와 함정 (C#)

상황

C# 게임서버에서 비동기 IO(DB 저장, 외부 API)를 async/await로 처리한다. 그런데 어떤 코드에서 서버가 간헐적으로 멈추거나(hang) 스레드풀이 고갈되는 현상이 보고됐다.

질문

  1. async/await는 내부적으로 어떻게 동작하는가? 스레드를 "블로킹"하는 것과 "비동기로 대기"하는 것의 차이를, 스레드풀·상태머신 관점에서 설명하라.
  2. someTask.Result 또는 someTask.Wait()로 비동기 메서드를 동기 대기하면 왜 위험한가? "데드락"과 "스레드풀 고갈" 두 가지로 나눠 설명하라.
  3. ConfigureAwait(false)는 무엇이고 라이브러리/서버 코드에서 왜 쓰는가?
  4. 게임서버의 핫 루프(틱)에서 async를 남용하면 어떤 비용이 생기는가?
답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.