coroutine
-
Coroutine Shared mutable state and concurrencyKotlin 2023. 3. 5. 13:41
Shared mutable state and concurrency 안녕하세요! 안드로이드 11기 강희원입니다. 이번 포스팅에서는 코루틴 공식 가이드의 Shared mutable state and concurrency에 대해 알아보도록 하겠습니다. 목차 The problem Volatiles are of no help Thread-safe data structures Thread confinement fine-grained Thread confinement coarse-grained Mutual exclusion Actors The problem 코루틴은 Dispatchers.Default와 같은 디스패처를 이용해서 다중 스레드에서 동작할 수 있습니다. 이 과정에서 여러 동시성 문제가 발생할 수 있는데, ..
-
Coroutine FlowKotlin 2023. 3. 4. 00:49
Asynchronous Flow suspending function은 비동기로 단일값을 반환하는 반면, Flow는 비동기로 동작하면서 여러 개의 값을 반환하는 function을 만들 때 사용하는 coroutine builder입니다. flow {}로 생성된 block은 suspend 할 수 있습니다. flow 역시 builder 이기 때문에 suspend 키워드 없이 함수를 만들 수 있습니다. emit 함수를 이용해 값들을 방출합니다. collect함수를 이용해 방출된 값들을 수집합니다. code fun foo() = flow { for(i in 1..3) { delay(100) emit(i) } } fun main() = runBlocking { val startTime = System.currentT..
-
코루틴(Coroutine) 취소와 타임아웃Kotlin 2023. 2. 26. 15:09
Cancellation and Timeouts 이번 게시글에서는 코루틴의 취소와 timeout 처리에 대해 알아보자. ※ IntelliJ나 Android Studio가 설치되어 있지 않다면 Kotlin 공식 사이트에서 지원하는 온라인 IDE(Kotlin Playground)를 사용하여 아래 코드를 실행할 수 있다. Cancelling coroutine execution launch에서 반환되는 job 객체는 코루틴을 취소할 수 있는 기능을 제공해 준다. fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a ..
-
Corotuine Composing Suspending FunctionsKotlin 2023. 2. 25. 15:49
안녕하세요 안드로이드 10기 강다현입니다. 이번에 알아볼 내용은 Corotuine의 세 번째 스터디 내용 Composing Suspending Functions입니다! 코틀린 스터디는 한 주에 두 개씩 공식 문서를 같이 보면서 진행되는데요, 저는 그중 스터디 두 번째 주에서 Composing Suspending Functions 파트의 발표를 맡았었습니다. 본 글에서는 이전 주에서 헷갈렸던 내용 3가지를 보고, 그 이후 세 번째 파트 스터디 내용인 Composing Suspending Functions에 대해 알아보겠습니다! 공식 문서 헷갈렸던 것들 저는 공식문서 1,2 파트에서 3가지가 헷갈렸는데요, 하나하나 살펴보도록 하겠습니다. 1. 코루틴 생성 시 자동 생성되는 스레드 코루틴을 생성하다 보면 스레..
-
코루틴(Coroutine) 기본 개념 이해하기Kotlin 2023. 2. 24. 13:05
Coroutine? 루틴의 일종으로, 협동 루틴으로 이해하면 쉽다. 코루틴의 “Co”는 with, together를 뜻한다. 코루틴은 자신의 실행이 마지막으로 중단된 지점 다음의 포인트부터 동작을 재개한다. 즉, 순차 실행이 가능하다. (tmi) 코루틴 최초의 출판물은 1963년에 등장했다. 러닝 커브는 다음 그림 참고(출처 바로가기) ※ IntelliJ나 Android Studio가 설치되어 있지 않다면 Kotlin 공식 사이트에서 지원하는 온라인 IDE(Kotlin Playground)를 사용하여 아래 코드를 실행할 수 있다. Your First Coroutine 아래 코드를 실행하면, fun main() { GlobalScope.launch { // launch a new coroutine in b..