Skip to content

Latest commit

 

History

History
24 lines (23 loc) · 1.54 KB

dispatcher.md

File metadata and controls

24 lines (23 loc) · 1.54 KB

Definition

  • 코루틴이 실행될 스레드를 결정하는 컨텍스트
  • 시작점과 중단점 모두를 포함

Types

  • Main
    • 메인 스레드에서 동작하는 작업에 사용되는 디스패처
    • 단일 스레드로 구성
    • UI 컴포넌트의 갱신을 위한 용도로 사용
  • Default
    • 표준 빌더에 특정 디스패처가 지정되지 않은 경우 사용되는 스레드 풀 디스패처
    • 최소 2개, 최대 CPU의 코어 수의 스레드 구성
    • CPU 집적도가 높은 작업(=계산, 정렬, 검색 등)을 위한 용도로 사용
  • IO
    • 대기 시간이 오래 걸리는 IO 작업에 사용되는 스레드 풀 디스패처
    • 기본 64개, CPU의 코어 수 중 큰 값으로 스레드 구성
    • 컨텍스트 스위칭을 최소화 하기 위해 디폴트 디스패처와 스레드를 공유
    • IO 집적도가 높은 작업(=파일, 데이터베이스, 네트워크 등)을 위한 용도로 사용
  • Unconfined
    • 특정 스레드를 제한하지 않는 디스패처
    • 호출된 스레드에서 작업을 시작하고 중단된 이후 다른 스레드에서 재개될 수 있음
    • 중첩되어 사용될 경우 스택 오버플로우를 방지하기 위해 이벤트 루프 형성
      • 이벤트 루프: 가장 바깥쪽 코루틴 범위의 현재 스레드 기준으로 중첩된 코루틴의 동작이 순서에 상관없이 실행 가능한 개념
    • 컨텍스트 스위칭을 최소화하며 특정 스레드에서 실행될 필요가 없는 경우에 사용(=일반적으로 사용하는 것에 주의 필요)