Structured concurrency : 구조적인, 계층적인 코루틴. 새 코루틴은 한 코루틴스코프 안에서 만들어 질 수 있다.
https://kotlinlang.org/docs/coroutines-basics.html#structured-concurrency
suspend
launch를 통해 코루틴을 만들 수 있는데 이 코루틴안에서 사용할 함수는 suspend 키워드를 사용해야 한다. 그런데 무작정 쓸 건 아니고 suspending 함수일 때에 suspend 키워드를 쓴다. delay와 같은 함수없는 경우라면 suspend를 쓰지 않아도 된다.
fun main() = runBlocking {=
launch { doWorld() }
println("Hello")
}
suspend fun doWorld() {
delay(1000L)
println("World!")
}
안드로이드 앱 개발을 할 때 자세히 모르고 썼던 suspend 키워드. 단순히 코루틴을 쓸 때에는 suspend 키워드를 쓴다라고만 알고 있었는데 이제는 명확하게 알고 써야겠다.
coroutineScope
runBlocking과 비슷한 코루틴빌더이다. 둘 다 내부가 완료될 때까지 기다린다. 차이점은 runBlocking은 기다리는 동안 현재 스레드를 막고 있고, coroutineScope은 중지되고, 다른 사용을 위해 스레드를 릴리즈한다.
// Sequentially executes doWorld followed by "Done"
fun main() = runBlocking {
doWorld()
println("Done")
}
// Concurrently executes both sections
suspend fun doWorld() = coroutineScope { // this: CoroutineScope
launch {
delay(2000L)
println("World 2")
}
launch {
delay(1000L)
println("World 1")
}
println("Hello")
}
'Kotlin > 공부노트' 카테고리의 다른 글
Coroutine - 5. suspending function, async (0) | 2022.04.04 |
---|---|
Coroutine - 4. Cancel, isActive (0) | 2022.03.24 |
Coroutine - 3. job, join (0) | 2022.03.17 |
Coroutine - 1. launch, runBlocking, delay (0) | 2022.03.10 |
댓글