Coroutines/Coroutine Basics

    [Coroutine] 3. Coroutine의 Dispatcher 란 무엇인가?

    Coroutine을 공부하면서 Dispatcher에 대해 상세히 설명된 글이 없어서 이 글을 작성하게 되었다. 많은 사람들에게 도움이 되길 바란다. Dispatcher 코루틴을 시작하게 되면, Dispatcher란 단어를 가장 먼저 접하게 된다. Dispatch란 한국어로 '보내다' 라는 뜻이다. 그렇다면 Dispatcher란 무엇을 보내는 것일까? 바로 스레드(Thread)에 코루틴(Coroutine)을 보낸다. 코루틴에서는 스레드 풀을 만들고 Dispatcher를 통해서 코루틴을 배분한다. 즉, 코루틴을 만든 다음 해당 코루틴을 Dispatcher에 전송하면 Dispatcher은 자신이 관리하는 스레드풀 내의 스레드의 부하 상황에 맞춰 코루틴을 배분한다. 이를 시각적으로 표현하면 다음과 같다. 1. ..

    [Coroutine] 2. Coroutine 안드로이드에서 사용하기

    Coroutine with Kotlin 코루틴은 코틀린 언어의 기본 기능으로 내장되어 있다. 따라서 별도 설정 없이도 코루틴을 위한 저수준 API를 사용할 수 있다. 하지만, 언어에 내장된 기능만으로는 launch나 async 같은 고수준 API는 사용할 수 없다. launch나 async 같은 고수준 API는 Jetbrains 사에서 배포한 kotlinx-coroutines 라이브러리의 기능으로, org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1 에 대한 의존성을 설정해줘야 사용할 수 있다. dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1' .. } 하지만, 안..

    [Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가?

    Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1과 같이 구성된다. 그림1의 메인 스레드(Main Thread)를 보자. JVM프로세스는 메인 스레드가 main 함수를 실행하며 시작되며, 만약 프로세스 내에 사용자 스레드가 메인 스레드 밖에 없는 상황에서는 메인 스레드가 종료되면 프로세스 또한 강제로 종료되는 특성을 가진다. 이때 메인 스레드는 한 번에 하나의 작업을 실행 가능하다. 그런데 그림에서는 메인 스레드말고 다른 2개의 스레드(Thread)가 보인다. 이 스레드(Thread)들은 사용자에 의해 생성되는 스레드로, 메인 스..