[클라이언트]/[Android Kotlin]
Kotlin 코루틴 / Python 코루틴 / Dart 코루틴
Hevton
2023. 4. 12. 00:30
반응형
Kotlin에서는 코루틴은
lifecycleScope.launch {} 등을 통해 코루틴 블럭을 생성한다.
이 코루틴 블럭 내에서는 순차적으로 진행되며, 이 코루틴 블럭을 나오는 방법이 있다. 그것은 바로 suspend 함수.
코루틴 블럭 안에서 suspend 함수가 있으면 코루틴 블럭을 언제든지 나갈 수 있다.
suspend함수가 없으면 그냥 하나씩 다 수행하고 코루틴 블럭을 나갈 수 있다. 일반적인 동기랑 다를 바가 없다.
suspend 함수로 인해 코루틴 블럭을 언제든지 나갈 수 있는 것이다.
이런 방식으로 비동기를 활용한다. suspend 된 동안에는 다른 작업을 처리하는 것이다.
이와 비슷한 개념으로 비동기를 구현하는 데에
Flutter와 Python에서는 async와 await를 이용한다. 이것들이 코틀린의 코루틴과 완전히 1:1 매칭은 안되어서 헷갈릴 수 있다.
async로 선언한 함수는 곧 비동기 함수이다. 코루틴이라고 부르기도 한다. 이 함수 내에서 await를 만나면 언제든지 async 함수를 벗어나서 async를 호출한 함수부 아래의 코드를 실행할 수 있게 된다. 또한 await는 비동기 함수를 기다리는 역할로써, 비동기 함수 호출 이후 값을 필요로 한다면 await로 걸어서 바로 아래 코드가 실행되지 않도록 해야한다.
https://hevton.tistory.com/886
반응형