Dispatcher

반응형

    [Coroutine] Kotlin을 위한 코루틴(Coroutine) 정리 - Coroutines for Android and Kotlin

    들어가며 코루틴을 공부하고나서 언젠가는 정리해야지 하고 있었는데, 이번에 시간이 있어서 정리를 하게 되었다. 아래 내용을 모두 이해할 수 있다면 코루틴의 기초적인 부분은 모두 이해했다고 볼 수 있으며, 왠만큼 복잡한 비동기 작업도 무난히 처리할 수 있다고 생각한다. 목차 [Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가? [Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가? Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1 kotlinworld.com [Corout..

    [Coroutine 부록] 2. Coroutine Thread 및 ThreadPool 만들기

    사실상 안드로이드 개발을 하면서는 Thread 혹은 Thread Pool을 만들 일이 거의 없다. 이미 만들어진 Dispatcher을 사용하는 것만으로 충분하기 때문이다. 하지만, 단순한 코틀린 프로그래밍이라면 Thread 혹은 Thread Pool을 지정해 Dispatcher을 만드는 것이 필요할 수 있다. 이에 부록으로 이 글을 쓰게 되었다. Thread 혹은 Thread Pool을 만드는 두가지 방법 코루틴에서는 아래 두가지 메서드로 Thread나 Thread Pool을 만들 수 있다. newSingleThreadContext(name: String) : Single Thread를 만드는 메서드 newFixedThreadPoolContext(nThreads: Int, name: String) : T..

    [Coroutine] 4. Dispatcher과 launch, async를 이용해 Coroutine 붙이기

    앞선 글까지 Dispatcher을 만드는 과정을 거쳤다. 이제부터 본격적으로 Coroutine을 만들기 시작할 것이다. Dispatcher에 Coroutine 붙이기 Dispatcher에 Coroutine을 붙이는 작업은 launch{ }와 aync{ } 두가지 메서드를 통해 가능하다.결과 반환이 없는 단순 작업에는 launch를 결과 반환이 필요한 작업에는 async를 사용한다. 결과 반환 반환타입 launch X Job async O Defered 결과를 반환하지 않는 launch launch는 결과를 반환하지 않고 launch 수행 시 job이 반환된다. with(CoroutineScope(Dispatchers.Main)) { val job: Job = launch { println(1) } } 결..

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

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

반응형