Skip to content

Coroutine

Yongku cho edited this page Jul 30, 2018 · 4 revisions

Coroutine

  • 실행 지점을 코드 블럭으로 저장하여, 해당 지점을 실행/중단/재시작을 할 수 있다.
  • 그래서 자발적/주기적으로 유휴상태를 만들 수 있기 때문에 비선점 멀티태스킹이 가능하다.
  • 동시성병렬 처리가 가능하다.
  • 코루틴 사이의 전환은 컨텍스트 전환이 발생하지 않음.

컨텍스트 전환

  • 기존의 프로세스의 상태 또는 레지스터값을 저장 후
  • 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터값을 교체하는 작업

비교

서브 루틴

Caller가 호출되면 Caller에게 항상 return을 한다.

반면에 Coroutine은 특정 지점에서 실행/중단/재시작을 할 수 있다.

스레드

선점식 멀티태스킹을 한다. 즉 동시성은 제공하만 병렬 처리는 제공하지 않는다.

반면에 Coroutine컨텍스트 전환없이 동시성, 병렬처리가 가능하다.

재귀

반복적인 호출을 위해 새로운 스택 프레임이 필요하여 최악의 경우에는 스택 오버플로우가 발생한다.

반면에 Coroutine은 특정 지점 코드 블럭이 저장되므로 데이터가 쌓이지 않는 다.

Clone this wiki locally