coroutineScope
-
coroutine - runBlocking, coroutineScope, suspend개발 2023. 2. 28. 20:30
runBlocking runBlocking은 코루틴 월드에 있지 않는 곳과 코루틴 월드를 이어주는 대표적인 함수다. 일반 메인 함수에서는 launch, async 같은 코루틴을 실행할 수 없는데 runBlocking을 이용해 코루틴 월드에 진입하면 실행 할 수 있게 된다. 이름에서도 유추할 수 있듯이 runBlocking은 내부 코루틴 작업이 완료될 때까지 동안 쓰레드를 잠시 일시 중지(blocked)시킨다. 쓰레드를 마구잡이로 중단시키는건 비효율적인 작업이기 때문에 runBlocking을 사용하는 코드는 대부분 애플리케이션 최상위 계층에 존재한다. fun main() { runBlocking { launch { delay(2000) println("Hello1") } launch { delay(1000..
-
Kotlin - Coroutine개발/안드로이드 2021. 5. 21. 20:00
Coroutine을 공부할 때 당장 실행되는 코드를 짜려고 launch, async 함수부터 먼저 써보게 되는데(과거의 나) 이것보단 Coroutine을 이루는 구조가 무엇인지를 먼저 공부하고 유틸리티 함수를 사용하면 훨씬 이해하기가 쉽다. Coroutine을 이루는 구조는 크게 CoroutineScope과 CoroutineContext다. 아래 그림으로 보면 CoroutineScope이 CoroutineContext를 포함하는 관계다. 1. CoroutineScope CoroutineScope은 Coroutine이 활동할 수 있는 범위를 말한다. 예를 들어 Coroutine이 ViewModel의 생성주기 내에서만 동작하게 할 수 있고 Activity Lifecyle 생명주기를 따라서 동작하게 할 수 있..
-
Kotlin - Coroutine개발/안드로이드 2020. 4. 15. 22:47
Kotlin의 Coroutine은 비동기 작업을 지원하는 "lightweight threads" 인 컴포넌트다. 이미 안드로이드에 있는 AsyncTask와 비슷한 역할을 수행하지만 Coroutine은 특별한 오버라이드 함 수 없이 간단하게 구현이 가능하고 깊게 들어가면 세부 동작 방식과 구현 철학은 다르다. 이번 포스트에서는 Kotlin의 Coroutine에 대해서 전반적인 소개와 사용 방법을 소개하려고 한다. 먼저 Coroutine은 하나의 task가 아니라, 여러 개 순서가 정해진 sub-tasks의 집합이다. Coroutine에서는 여러 개의 sub-task가 존재하는데 이들의 실행 순서는 보장된(guaranteed) 순서로 실행이 된다. 즉 코드 상에서는 얘네들이 sequential 하게 짜여져 ..