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

Q. 순차적으로 짤 수 있는 부분에서는 코루틴을 사용하고, 스트림이 더 맞는 부분에서는 플로우를 사용한다고 했는데, 실제로 어떤 상황에서 코루틴과 플로우를 사용할 것인가?
👀 코루틴과 플로우를 이해하기 쉽도록 ChatGPT한테 그림그려달라고 해봤다

코루틴은 일련의 과정이 순차적으로 진행되는 도로.
차(= 작업)들이 임의의 정류장에서 일시 중지 할 수있고, 필요할 때 다시 움직인다.
이로 인해서 다른 작업들이 병렬적으로 동시에 진행이 가능
플로우는 작은 개울이 모여 강을 이루는 것.
각각의 작은 개울은 독립적인 작업 흐름을 나타내며, 이들이 합류하여 하나의 큰 데이터 스트림을 형성.
이 스트림은 지속적으로 데이터를 전달하며, 각 데이터는 순차적으로 처리됩니다.
여전히 이해가 완벽하게 되지는 않지만 앞으로의 강의를 듣고 차차 알아가보도록 하자
- 1-1 스코프 빌더(1)
- 1-1 스코프 빌더(2)
- 1-2 구조화된 동시성(1)(2)
- 1-3 취소와 타임아웃(1)
- 1-3 취소와 타임아웃(2)
- 1-4 서스펜딩 함수
- 1-5 코루틴 컨텍스트와 디스패처(1, 2)
- 1-6 CEH와 슈퍼바이저 잡
- 1-7 공유 객체, Mutex, Actor(1)
- 1-7 공유 객체, Mutex, Actor(2)
'Android' 카테고리의 다른 글
[Coroutine] 스코프 빌더 - sleep, suspend (0) | 2024.05.04 |
---|---|
[Coroutine] 스코프빌더 - runBlocking, launch (0) | 2024.05.04 |
[코틀린] apply, run, with, let, also? (1) | 2023.11.29 |
안드로이드에서 dp란? (0) | 2023.11.23 |
[깡샘의 안드로이드 앱 프로그래밍 with 코틀린] 코틀린 (0) | 2023.11.21 |