Kotlin/코루틴
-
코루틴 Timeout이 제대로 동작하지 않은 이유Kotlin/코루틴 2024. 3. 25. 00:24
개요코루틴 timeout을 다루며 코루틴 Timeout이 제대로 동작하지 않은 이유에 대해 공유해보고자 합니다.부제: coroutine timeout dose not work 코루틴의 withTimeout 메서드public suspend fun withTimeout(timeMillis: Long, block: suspend CoroutineScope.() -> T): T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } if (timeMillis setupTimeout(TimeoutCoroutine(timeMillis, uCont), block) }} withTimeout 메서드를 활용하면 ..
-
공식문서로 알아보는 Coroutine context and dispatchersKotlin/코루틴 2024. 1. 29. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 context와 dispatchers에 대해 알아보면서 실습해보고자 합니다. CoroutineContext란? CoroutineContext는 kotlin 표준 라이브러리에 포함되어 있는 interface입니다. Coroutine은 항상 CoroutineContext 안에서 실행됩니다. CoroutineContext는 다양한 요소들의 집합이며, 주요 요소로는 이전에 알아본 Job과 이번 시간에 알아볼 dispacther입니다. 조금 더 간단하게 표현해 보자면 CoroutineContext는 Coroutine을 어떻게 처리할지에 대한 정보를 가지고 있는 객체입니다. 이전에 CoroutineScope 내부에 코드를 작성하곤 했습니다. CoroutineScope은 C..
-
공식문서로 알아보는 Composing suspending functionsKotlin/코루틴 2023. 12. 9. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 suspend function 작성방법에 대해 알아보면서 실습해보고자 합니다. 기본적으로 순차적으로 실행된다 val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() println("The answer is ${one + two}") } println("Completed in $time ms") suspend fun doSomethingUsefulOne(): Int { delay(1000L) // pretend we are doing something useful here return 13 } suspend fun doSomethingUsefulT..
-
공식문서로 알아보는 Cancellation and timeoutsKotlin/코루틴 2023. 12. 4. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 취소와 타임아웃에 대해 알아보고 실습도 진행해보고자 합니다. 코루틴의 취소 val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I'm tired of waiting!") job.cancel() // cancels the job job.join() // waits for job's completion println("main: Now I can quit.") //결과 job: I'm sleeping 0 ... job: I'm sleeping 1 ... job: I'm sleepi..
-
공식문서로 알아보는 Coroutines basicsKotlin/코루틴 2023. 12. 3. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 개념에 대해 알아보고 실습도 진행해보고자 합니다. Gradle 의존성 추가 implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core") 첫 번째 실습 fun main() = runBlocking { // this: CoroutineScope launch { // launch는 새로운 코루틴을 만들어냄 delay(1000L) // 특정 시간동안 코루틴을 일시 중단, 기본 스레드는 차단되지 않고 다른 코루틴이 실행될 수 있음 println("World!") // print after delay } println("Hello") // main 코루틴은 이전에 생성된 코루틴이 일시중단되는 것과 상관없이 실행됨 } /..
-
Coroutines이란?Kotlin/코루틴 2023. 6. 20. 00:01
개요 Kotlin을 사용하며 Coroutines를 사용하여 여러 동시처리를 하기 위해 공부해보고자 합니다. Coroutine이란? 코투린은 루틴의 일종이며, Co는 with 또는 together를 뜻합니다. Routine이란 하나의 task 또는 함수로 생각하면 됩니다. 이름만 보았을때는 코틀린에서 만들어진 개념같지만 코틀린의 것만이 아니며 여러 언어에서 지원하고 있는 개념입니다. 예를 들어 javascript의 async await를 사용한 경험이 있다면 이미 코루틴을 사용해 본 경험이 있는 것입니다. 코루틴은 실행을 일시 중단했다가 다시 시작할 수 있는 컴퓨터 프로그램 구성 요소로, 협력적 멀티태스킹을 위한 서브루틴을 일반화합니다. 코루틴은 협동 작업, 예외, 이벤트 루프, 반복자, 무한 목록 및 파..