목록 보기
바삭한 신입들의 동시성 이야기 - Kotlin 편
프론트엔드

바삭한 신입들의 동시성 이야기 - Kotlin 편

데브시스터즈
데브시스터즈
2022년 7월 19일

두줄요약

Android UI 응답성을 위해 Kotlin Coroutine의 Main-Safe 비동기 처리 원리를 설명했습니다. CPS·상태 머신 구조와 Thread 대비 메모리 효율을 함께 비교했습니다.

문제 상황

  • 60fps 유지를 위한 16ms 프레임 예산과 네트워크·DB·JSON 파싱 같은 장시간 작업의 충돌
  • 메인 스레드 장기 점유로 인한 UI 버벅임과 ANR 위험

구조와 흐름

  • suspend 함수 호출을 Continuation 전달 방식인 CPS 코드로 변환
  • 중단 지점별 label·지역 변수·결과를 상태 머신에 저장하고 resumeWith로 다음 지점 재개
  • Coroutine의 스레드 내 실행과 재개 시 스레드 전환 가능 구조

선택 이유

  • 콜백 중첩을 순차 코드 형태로 바꿔 가독성·추론성 향상
  • 스레드 블로킹 없이 작업 중단과 재개를 지원해 Main-Safe한 비동기 처리 가능

성능/운영 포인트

  • 다수 Coroutine이 제한된 스레드에서 실행되어 불필요한 스레드 생성과 메모리 사용량 감소
  • 대량 생성 비교에서 Thread 방식의 높은 스레드 수와 OOM 가능성 확인

다음 읽기

#동시성 주제를 이어서 읽기

바삭한 신입들의 동시성 이야기 - Swift편

Swift 5.5의 async/await 도입 배경과 동작 원리를 정리했습니다. completion handler의 한계를 줄이고, 코루틴과 continuation으로 안전한 비동기 처리를 설명했습니다.

데브시스터즈
데브시스터즈
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...