THREAD PATTERN

스레드 실행 패턴 기준

스레드를 직접 만들지, 풀에 맡길지, 프로세스나 async로 바꿀지는 작업의 반복성, 대기 시간, CPU 사용량에 따라 결정합니다.

simple

직접 생성

작업 수가 작고 수명 주기가 명확할 때 사용합니다. join 지점이 코드에 드러나야 합니다.

background

데몬 스레드

로그 수집, 헬스 체크처럼 메인 종료를 막지 않는 보조 작업에 적합합니다.

reuse

스레드 풀

반복 요청을 큐에 넣고 고정된 worker가 처리해 생성 비용과 폭주를 줄입니다.

cpu

프로세스

CPU 계산은 multiprocessing으로 코어를 나누어 씁니다.

io

async/await

수많은 네트워크 대기 작업은 이벤트 루프에서 논블로킹으로 섞어 처리합니다.

풀 크기

CPU 바운드는 코어 수 근처로 제한하고, I/O 바운드는 대기 비율을 반영해 더 크게 잡습니다.

threads = cores x (1 + wait / compute)

종료 규칙

작업 제출 종료, 큐 drain, join, timeout을 정해 두어 프로세스가 깔끔하게 내려가게 만듭니다.

안전성

공유 변수는 lock, queue, immutable 데이터로 보호하고 임계 구역을 짧게 유지합니다.