Android/Coroutine
[안드로이드] Coroutine 이란?
_hong
2023. 2. 28. 11:15
Coroutine
Main-Safe 한 경량 스레드
선점/비선점
- 선점 : task는 스케쥴러에 의해 cpu에 할당된다. 다른 task가 할당됐을 때 스케쥴러에 의해서 cpu 사용권을 뺐을 수 있다.
- 비선점 : 스케쥴러가 cpu사용권을 뺐을 수 없다.
코루틴은 비선점 멀티 태스크이고 태스크 여러 개를 번갈아가면서 실행한다. (동시성 지원)
협력형 멀티태스크
다수의 태스크들이 실행시간을 나눠 갖는다. 태스크들은 서로 실행을 양보할 수 있다.


코루틴
- Task 단위를 스레드 내부 object들로 나눈다.
- 스레드 내부에서 Object를 나눠서 실행하므로 콘텍스트 스위칭 x - 가벼운 비용으로 비동기 실행
- 동시성 제공, 병렬성 x
- 스케쥴러가 아니라 프로그래머에 의해 실행, 중지, 재개 시점이 결정된다.
스레드
- 선점형 방식이므로 스케쥴러에 의해 cpu 사용권을 뺏길 수 있다.
- 스레드는 콘텍스트 스위칭이 발생한다.
- 병렬적으로 스레들이 실행된다.
Reference.
https://velog.io/@dev-junku/Kotlin-Coroutine에-대해