본문 바로가기
Android

[Coroutine] 처음 만나는 코루틴

by Diane_KIM 2024. 5. 4.

강의 제목

The RED : 효과적인 비동기처리를 위한 Kotlin Coroutines & Flow 마스터 by 김용욱

 

코루틴 여러번 개념을 정리해봤는데 아직도 헷갈리는데 이번기회에 내 머리에 주입해보기 위해 다시 한번 공부해보기로 했습니당

 

  • 동시성, 병렬성이 필요한 이유
    • 우리는 멀티 테스킹을 하지 않으면 살아 남을 수 없는 환경(?)이다 
    • 음악을 들으면서 인스타도 봐야하고, 통화하면서 캘린더를 보면서 일정도 확인해야하고, 유투브를 보면서 네이버 검색도 해야한단말이다.
    • 이로인해 하나의 칩에 여러개의 코어가 생겼고 여러개의 프로세스/스레드가 하나의 메모리를 쓸 수 있게 되었다
    • 하지만, 공유 메모리 사용으로 인해 데이터 무결성 문제가 발생할 수가 있다.
    • 그로인해 하나의 프로세스안에서 동작하는 안드로이드 앱에서도 여러 작업을 동시에 처리하려고 할때, 동시성, 병렬성 관리가 필수적이다. 함수의 실행 순서를 제어하고, 자원 접근 충돌을 방지하며, 데이터 일관성을 유지하기 위해 필요!
  • Rx를 쓰는 경우에 콜백을 써야하는데 그러면 깊이가 들어가면서 가독성이 안좋아짐
  • 코루틴 : 비동기와 병렬성을 순차적으로 짤 수 있는 코드 방법을 제공
  • 플로우 : 비동기와 병렬성을 스트림형태로 풀 수 있는 형태를 보여줌

 

 

Q. 순차적으로 짤 수 있는 부분에서는 코루틴을 사용하고, 스트림이 더 맞는 부분에서는 플로우를 사용한다고 했는데, 실제로 어떤 상황에서 코루틴과 플로우를 사용할 것인가?

 

 

👀 코루틴과 플로우를 이해하기 쉽도록 ChatGPT한테 그림그려달라고 해봤다

코루틴은 일련의 과정이 순차적으로 진행되는 도로. 

차(= 작업)들이 임의의 정류장에서 일시 중지 할 수있고, 필요할 때 다시 움직인다.

이로 인해서 다른 작업들이 병렬적으로 동시에 진행이 가능

 

플로우는 작은 개울이 모여 강을 이루는 것.

각각의 작은 개울은 독립적인 작업 흐름을 나타내며, 이들이 합류하여 하나의 큰 데이터 스트림을 형성.

이 스트림은 지속적으로 데이터를 전달하며, 각 데이터는 순차적으로 처리됩니다.

 

여전히 이해가 완벽하게 되지는 않지만 앞으로의 강의를 듣고 차차 알아가보도록 하자