코루틴

들어가며 그 동안 우리는 Kotlin coroutine 을 동작하는 구성 요소들(dispatcher, scope) 에 대해 배워왔는데요 coroutine 을 실제 적용하기 위해서는 근본적으로 suspend 함수가 어떻게 동작 하는지에 대해 알아야 합니다. suspend 함수란 무엇이고, 어떻게 동작하게 될까요? 차근차근 알아봅시다. Suspend 자 그럼, Suspend 함수는 도대체 무엇일까요? What is suspend function? Suspend 함수는 한줄로 요약하면 중단가능한 함수 입니다. 중단가능한 함수는 함수가 가동하면서 언제든지 다른 요인에 의해 중단이 가능하다 라는 것을 의미합니다. 위 그림 예시를 보면, 빨간색 Box 의 function 이 특정 Thread 에서 일을 처리하다가,..
안녕하세요~! Coroutine 에서 제공하는 다양한 Interfa ce 중에서 Queue 와 비슷한 개념을 가진 Channel 에 대해서 알아볼려고 해요 Channel 이란 Channel 은 쉽게 말씀드리면 데이터를 stream 처럼 전송하기 위한 인터페이스라고 보시면 됩니다. 마치 Kafka 처럼 데이터를 제공하는 producer 와 데이터를 소비하는 consumer 의 형태로 구성됩니다. 위 그림처럼 인터페이스도 데이터를 제공하는 SendChannel 과 데이터를 소비하는 ReceiveChannel 로 이루어진 것을 볼 수 있죠. public interface SendChannel { public suspend fun send(element: E) } public interface ReceiveCh..
Coroutine 안녕하세요~ 오늘은 Coroutine 을 구현할 때 예외 처리에 대한 방법을 알아보도록 해볼려고 해요 흔히들 kotlin 에서는 try catch 문을 활용해서 예외를 핸들링 하거나 runCatching 문을 통해서 Result 객체를 기반으로 처리를 많이 하게 되는데요. Coroutine 에서는 직접적으로 예외를 catch 해서 하는 방식보다 다양한 방식으로 예외처리하는 유틸들을 제공한답니다. 하나씩 알아보도록 해보죠~! 🤗 Coroutine Hierarchy 예외에 대해 직접적으로 살펴보기전에 우리는 Coroutine 의 계층 구조를 알아볼 필요성이 있습니다. Coroutine 에서의 구조는 계층 구조를 띄고 있습니다. 부모로부터 호출된 coroutine 은 자식의 성격을 띄고, 자..
Coroutine 이전 시간에는 코루틴의 동작원리와 동시성 과 병렬성 의 차이에 대해 알아보았습니다. https://huisam.tistory.com/entry/coroutine1 [Kotlin] Coroutine - 1. 코루틴에서 동시성이란? 코루틴이란? 같은 프로세스라도 쓰레드를 어떻게 운영하느냐에 따라서 처리량이 많이 달라질 수 있죠 🔄 코틀린의 경우 코루틴 이라는 동시성이 가능하도록 하는 기능이 있습니다 코루틴은 일 huisam.tistory.com 그런데.. 아직도 코루틴의 동작 방식이 그렇게 와닿는 것 같지는 않습니다. 도대체 어떻게 동시에 처리하는 것처럼 보인다는 것인지 코루틴이라는 것은 어떻게 쓰레드를 왔다갔다 하면서 작업을 처리하는 것인지 마법같은 동시처리를 어떻게 코루틴은 처리하고 있..
코루틴이란? 같은 프로세스라도 쓰레드를 어떻게 운영하느냐에 따라서 처리량이 많이 달라질 수 있죠 🔄 코틀린의 경우 코루틴 이라는 동시성이 가능하도록 하는 기능이 있습니다 코루틴은 일반적으로 경량 쓰레드 라고 불리워지며 쓰레드당 하나의 명령만 실행됩니다 즉, 쓰레드보다는 생성비용이 가볍고 빠르게 생성할 수 있다는 것에 장점이 있습니다 👍 코틀린은 왜 경량 쓰레드라고 불러질까요? https://stackoverflow.com/questions/63719766/why-kotlin-coroutines-are-considered-light-weight Why kotlin coroutines are considered light weight? If coroutines is still using threads to ..
huisam
'코루틴' 태그의 글 목록