스레드 프로그래밍

스레드 풀 운용 기준

스레드는 많이 만들수록 빠른 것이 아닙니다. 생성 비용, 작업 큐, join/detach, 공유 데이터 보호를 함께 봐야 합니다.

01

직접 생성

작업마다 스레드 만들기

간단하지만 요청이 많아지면 생성 비용과 관리 비용이 커집니다.

02

풀 사용

고정된 작업자에게 큐 전달

반복 작업은 ThreadPoolExecutor나 worker queue가 안정적입니다.

03

안전성

공유 상태 접근 보호

결과 수집과 카운터 갱신은 lock, queue, atomic 같은 보호 장치가 필요합니다.

풀 크기 기준

  • CPU 바운드 작업은 코어 수보다 과하게 늘리지 않습니다.
  • I/O 바운드 작업은 대기 시간이 많아 더 많은 작업자를 둘 수 있습니다.
  • daemon 스레드는 프로그램 종료 시 작업이 끊길 수 있음을 고려합니다.

스레드 상태

join 완료 대기 결과 회수
detach 독립 실행 회수 불필요
pool 재사용 큐 기반 처리