책너두 (컴퓨터 밑바닥의 비밀) 7일차 코루틴

요약

  • 코루틴은 스레드와 매우 유사한 기능인 일시 중지와 재개 기능이 있음.
    • 코루틴은 자신의 실행 상태를 저장할 수 있기에 코루틴이 반환된 후에도 계속 호출이 가능함.
    • 마지막으로 일시 중지된 지점에서 다시 이어서 실행됨.
  • 일반 함수는 반환된 후 프로세스 주소 공간의 스택 영역에 더이상 어떤 함수 실행 시 정보도 저장하지 않음.
    • 코루틴은 반환될 때 함수의 실행 시 정보를 저장할 필요가 있음.
      • 멈췄던 지점에서 다시 실행할 때 정보가 필요하기 때문.
  • 코루틴의 실행 흐름은 운영 체제가 스레드를 스케줄링 하는 것과 똑같음.
    • 코루틴을 사용할 때는 프로그래머가 명시적으로 yield 와 같은 예약어를 사용하여 어디에서 일시 중지하고 CPU, 리소스를 내어 줄 것인지 명시적으로 지정해야 함.
  • 코루틴은 스레드의 구현과 본질적으로 차이가 없음.
    • 그러나 프로세스 주소 공간의 스택 영역은 스레드를 위한 공간임.
    • 코루틴의 실행 시간 스택 프레임 정보는 힙 영역에 메모리를 요청할 수 있음.
    • 이론적으로 메모리 공간이 충분하다면 코루틴 개수에 제한이 없으며 코루틴 간 전환이나 스케줄링은 전적으로 사용자 상태에서 일어나기 때문에 운영 체제가 개입할 필요가 없음.

댓글

Designed by JB FACTORY