deep-dive into Coroutines #목차

choi jeong heon
3 min readOct 22, 2022

--

Jeju-Island photo by me ^^ 제주도 가고 싶다

코루틴이라는 기술을 적극적으로 사용하는 우리는 과연 코루틴을 잘 활용하고 있나? 라는 의문을 항상 가지고 있었습니다.

항상 습관처럼 viewModelScope 에 suspend 함수를 call 하는 식의 구현이 대부분이었고,,

viewModelScope.launch {
getProductListUseCase()
...
}

코루틴에 대한 지식은 코루틴 docs 나 구글링으로 쉽게 찾을 수 있는 정보들이 전부였습니다, 그래서인지 비동기 함수를 마치 동기식 처럼 사용할 수 있게 만들어주는 코루틴은 마법? 같은 신비한 존재였습니다.

주니어 개발자로서 기술을 그냥 사용하기 보다는 배경지식을 이해하고 어떻게 동작하는지 관심을 가지는 것이 중요하다고 생각합니다. 따라서 조금 무모할 수도 있지만? 코루틴 내부구현을 살펴보려합니다.

아시다시피 코루틴은 작은 규모의 프로젝트가 아니기 때문에 어디서부터 시작해야 할지 감이 오지 않았습니다.

너무 많아,, @_@

하지만 성빈랜드 의 코루틴 내부 구현 분석 스터디 활동을 하며 방향성과 많은 인사이트들을 얻을 수 있었습니다. 😎

코루틴 스터디 활동

또한 코틀린 슬랙 의 코루틴 채널과 코루틴 깃허브 에서도 많은 정보를 얻을 수 있었습니다. 코틀린 슬랙에는 코루틴 리드 개발자이신 Roman Elizarov 님도 계시고 많은 외국 개발자 분들이 양질의 질문과 답변을 올려주셔서 도움이 많이 됩니다! :)

들어가기에 앞서

앞으로 연재될 코루틴 내부 구현 분석 글들은 코루틴에 대한 기본적인 지식이 있는 분들을 대상으로 한 글임을 알려드립니다. 코루틴이 처음이시라면 코루틴 docs 를 먼저 읽어보시는 것을 추천드립니다~

목차

목차는 다음과 같습니다. 추후 수정될 수 있습니다.

  1. Continuation
    1) CPS
    2) suspend and resume #1
    3) suspend and resume #2
  2. CoroutineContext
  3. Coroutine Dispatcher
    1) ContinuationInterceptor
    2) Unconfined
    3) IO
    4) Default
    5) Main
    6) Coroutine Scheduler
  4. Job
    1) Job State
    2) Parent — Child
    3) Exception
  5. Flow
  6. 기타

아주 험난하고 긴 여정이 될 것 같습니다 🧗🏻‍♂️

--

--