시배's Android

Kotlin Coroutines Deep Dive | 18장. 핫 데이터 소스와 콜드 데이터 소스 본문

Book/Kotlin Coroutines Deep Dive

Kotlin Coroutines Deep Dive | 18장. 핫 데이터 소스와 콜드 데이터 소스

si8ae 2024. 2. 22. 22:36
  • 핫 데이터 스트림은 열정적이라 데이터를 소비하는 것과 무관하게 원소를 생성하지만, 콜드 데이터 스트림은 게을러서 요청이 있을때만 작업을 수행하며 아무것도 저장하지 않습니다.
  • 핫인 리스트와 콜드인 시퀀스를 사용할 때 그 차이가 드러납니다.
  • 핫 데이터 스트림의 빌더와 연산은 즉각 실행됩니다.
  • 콜드 데이터 스트림에서는 원소가 필요할 때까지 실행되지 않습니다.
  • 콜드 데이터 스트림
    • 무한할 수 있습니다.
    • 최소한의 연산만 수행합니다.
    • 메모리를 적게 사용합니다.
  • 핫 데이터 스트림
    • 항상 사용 가능한 상태입니다.
    • 여러 번 사용되었을 때 매번 결과를 다시 계산할 필요가 없습니다.
  • 채널은 핫이라 값을 곧바로 계산합니다. 별도의 코루틴에서 계산을 수행합니다.
  • 채널은 소비되는 것과 상관없이 값을 생성한 뒤에 가지게 됩니다.
  • 채널은 수신자가 얼마나 많은지에 대해서 신경 쓰지 않습니다.
  • 채널의 원소는 단 한 번만 받을 수 있기 때문에, 첫 번째 수신자가 모든 원소를 소비하고 나면 두 번째 소비자는 채널이 비어 있으며 이미 닫혀 있다는 것을 발견하게 됩니다.
  • 플로우는 콜드 데이터 소스 이기 때문에 값이 필요할 때만 생성합니다.
  • flow는 단지 최종 연산이 호출될 때 원소가 어떻게 생성되어야 하는지 정의한 것에 불과합니다.
  • flow 빌더는 빌더를 호출한 최종 연산의 스코프에서 싫행됩니다.