Kotlin Coroutine으로 안드로이드 앱 동시성 문제 해결!

by DD
3년 전
조회수 8

Main-Safe 개발을 위해 Kotlin Coroutine을 도입하여 가독성을 향상시킴

CoroutineCPS 패러다임을 활용하여 suspend/resume을 구현함

스레드 대비 Coroutine 사용 시 메모리 사용량 감소 및 성능 향상

Coroutine의 마법: CPS와 State Machine

Kotlin CoroutineCPS(Continuation Passing Style) 패러다임을 기반으로 한다. 구체적으로, suspend 함수는 Continuation 객체를 전달받아, 작업 완료 후 다시 호출하는 방식으로 동작한다. 따라서 suspend/resume을 통해 비동기 코드를 동기적으로 표현할 수 있으며, State Machine을 통해 각 함수의 상태를 관리한다.

콜백 vs 코루틴: 가독성 트레이드오프

콜백 방식은 Main-Safe하지만, 콜백 지옥으로 인해 코드 가독성이 저하될 수 있다. 반면, Coroutinesuspend 함수를 통해 콜백 기반 코드를 순차적인 코드로 변환하여 가독성을 향상시킨다. 따라서 에러 핸들링디버깅 과정에서 큰 이점을 얻을 수 있으며, 코드 추론이 용이해진다.

스레드 vs 코루틴: 성능 비교 분석

Coroutinelight-weight thread로, 스레드보다 적은 메모리를 사용하며, 스레드 생성 비용을 줄여준다. 따라서 멀티스레드 방식보다 메모리 사용량 감소성능 향상을 기대할 수 있다. 결과적으로, 동시성 작업을 효율적으로 처리하여 앱의 응답성을 개선한다.

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

댓글 0

첫 번째 댓글을 남겨보세요!