코루틴 공식 가이드 읽고 분석하기— Part 0
Korean [English]
요즘 안드로이드 앱 개발자들은 주개발 언어가 Java 에서 Kotlin 으로 많이 전환 되고 있다고 생각합니다. iOS 가 objective-c 에서 swift 로 전환할 때 처럼 안드로이드 SDK 공식 가이드에서도 Kotlin 과 Java 두가지 구현 예제를 보여주고 있고, 개발자의 영원한 친구 Stack overflow 에서도 Kotlin 으로 답변된 내용들도 자주 보이며 자연스럽게 받아들여 집니다.
개인적으로는 Kotlin 으로 개발해 보면서 불필요한 코드(Boilerplate)들이 최소화되고, 좀 더 안전한 방식으로 코딩할 수 있게 된 것 같습니다. Kotlin 언어를 개발한 Jetbrain 은 Kotlin 대중화에 한 발작 더 나아가기 위해(?) 많은 개발자들이 겪는 스레딩 문제를 직관적인 방식으로 해결할 수 있도록 도와주는 코루틴(Coroutine) 을 개발해 Kotlin 에 포함시켰습니다.
이 글은 코틀린 공식 가이드 문서 중 코루틴 부분을 읽고/테스트해보고/코드레벨에서 분석해보며 한층 더 깊은 이해하고자 하는데 그 목적이 있습니다.
본격적으로 들어가기 전에…
코루틴은 현재 (2019.01) 구현상으로 다음과 같은 클래스 간 관계를 갖고 있습니다.
(WTH…?) 위 다이어그램에 큰 의미를 두지 않으셔도 됩니다. 더 간략하게 나타내보고자 했으나… 실패;
지금은 그저 “제일 위에 위치한 CoroutineContext 와 CoroutineScope 가 뭔가 중추적인 역할을 하고 있구나…” 정도만 알고 넘어가도 좋을 것 같습니다.
이 글은 공식 가이드의 한국어 번역(의역)과 관련 기술에 대한 코드 레벨 분석으로 구성 될 예정이며, 지금 글은 Part-0 로써 목차의 역할을 할 것입니다. 아래 파트 타이틀 중 링크가 활성화된 부분이 진행 완료 된 부분입니다. 긴 여행이 될 것 같습니다.
Coroutine
- Part-1 (Basics)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석
+ CoroutineContext 와 CoroutineScope 란 무엇인가?
+ 코루틴은 왜 스레드보다 가볍다고 할까?
+ suspend 함수란 무엇이고 어떻게 동작할까?
+ 코루틴 디스패처 조금 더 살펴보기 - Part-2 (Cancellation and Timeouts)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석
+ withContext 코루틴 빌더가 하는일은 무엇인가?
+ withTimeout 은 코루틴의 수행시간을 어떻게 제한하고 있을까? - Part-3 (Channels)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석
+ producer-consumer 구현을 돕기위한 produce-consumeEach 확장 함수는 어떻게 구현되어 있을까?
+ Fan-out 에서 수신 코루틴 중 하나에 오류가 발생했을 때 수신 방식(for-loop, consumeEach)에 따라 오류 전파 동작이 다른 이유는 무엇일까? - Part-4 (Composing Suspending Functions)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석
+ 중단 함수의 비동기 처리를 위한 async { } 코루틴 빌더는 어떻게 구현되어 있을까? - Part-5 (Coroutine Context and Dispatchers)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석
+ 콜백, 리액티브 그리고 코루틴
+ 코루틴, 중단함수, 잡(Job) 이들의 관계는 무엇인가?
+ threadLocal.asContextElement() 확장 함수는 어떻게 구현되어 있을까? - Part-6 (Exception Handling)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석
+ 코루틴은 어떤 상태들을 가지고 있을까?
+ 코루틴 예외 다루기 - Part-7 (Select Expression)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석 - Part-8 (Shared Mutable State and Concurrency)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석 - Part-9 (Flow)
- 공식 가이드 읽기 (한국어 번역)
- 관련 기술 분석
+ StateFlow 와 SharedFlow
+ 코틀린 플로우 효율적으로 사용하기 (Cold Flow)
+ 코틀린 플로우 내부 살펴보기 1 (Cold Flow)
+ 코틀린 플로우 내부 살펴보기 2 (Hot Flow)