hong's android

[안드로이드] Coroutine 이란? 본문

Android/Coroutine

[안드로이드] Coroutine 이란?

_hong 2023. 2. 28. 11:15

Coroutine

 Main-Safe 한 경량 스레드

 

선점/비선점

  • 선점 : task는 스케쥴러에 의해 cpu에 할당된다. 다른 task가 할당됐을 때 스케쥴러에 의해서 cpu 사용권을 뺐을 수 있다.
  • 비선점 : 스케쥴러가 cpu사용권을 뺐을 수 없다.

코루틴은 비선점 멀티 태스크이고 태스크 여러 개를 번갈아가면서 실행한다. (동시성 지원)

 

협력형 멀티태스크

다수의 태스크들이 실행시간을 나눠 갖는다. 태스크들은 서로 실행을 양보할 있다. 

 

https://eocoding.tistory.com/88

 

코루틴

- Task 단위를 스레드 내부 object들로 나눈다.

- 스레드 내부에서 Object를 나눠서 실행하므로 콘텍스트 스위칭 x - 가벼운 비용으로 비동기 실행

- 동시성 제공, 병렬성 x

- 스케쥴러가 아니라 프로그래머에 의해 실행, 중지, 재개 시점이 결정된다.

 

스레드

- 선점형 방식이므로 스케쥴러에 의해 cpu 사용권을 뺏길 수 있다.

- 스레드는 콘텍스트 스위칭이 발생한다. 

- 병렬적으로 스레들이 실행된다.

 

 

 

Reference.

https://velog.io/@dev-junku/Kotlin-Coroutine-대해