THREAD MAPPING

스레드 매핑 모델 선택표

사용자 코드가 만든 실행 단위가 실제 OS 스레드와 어떻게 연결되는지가 블로킹, 병렬성, 생성 비용을 결정합니다.

M:1

User Thread

런타임이 사용자 공간에서 스케줄링하고 커널은 하나의 실행 흐름만 봅니다.

생성 빠름
블로킹에 약함
1:1

Kernel Thread

각 사용자 스레드가 OS 스레드 하나와 연결되어, 코어가 여러 개면 서로 다른 스레드가 같은 시간 구간에 실행됩니다.

CPU 바운드 적합
생성 비용 큼
M:N

Runtime Pool

많은 작업을 적은 OS 스레드 위에 올리고 런타임이 작업을 옮겨 태웁니다.

대량 동시성
런타임 의존
yield

Coroutine

await 또는 suspend 지점에서 자발적으로 양보해 이벤트 루프가 다른 작업을 실행합니다.

I/O 대기 효율
비동기 전파
auto

Virtual Thread

동기식 코드처럼 작성하지만 블로킹 때 런타임이 carrier 스레드에서 분리합니다.

코드 단순
런타임 감지

CPU 바운드

이미지 처리, 암호화, 행렬 연산처럼 계산이 중심이면 코어 수 근처의 커널 스레드나 프로세스를 씁니다.

I/O 바운드

DB, 파일, 네트워크 대기가 크면 코루틴, 고루틴, 가상 스레드처럼 대기 중 양보 가능한 모델이 유리합니다.

블로킹 위험

런타임이 모르는 블로킹 호출은 worker를 묶어 둘 수 있으므로 전용 풀이나 비동기 API로 분리합니다.