← 질문 목록
#167깊이 0
스레드 풀을 사용하는 주된 이유는 무엇인가?
스레드 생성과 제거에 드는 오버헤드를 줄이기 위해서다. 요청마다 스레드를 새로 만들면 커널 모드 전환과 메모리 할당 비용이 반복적으로 발생한다.
유휴
실행
작업 큐에 쌓인 요청을 가져간다
실행
유휴 (앞의 상태로 돌아갑니다)
처리가 끝나면 소멸하지 않고 풀로 돌아간다
작업 큐에 요청이 들어오면 풀에 있는 유휴 스레드가 이를 가져가 처리한다. 처리가 끝나면 스레드는 소멸하지 않고 다시 풀로 돌아가 다음 작업을 기다린다.
적절한 풀 크기를 설정하지 않으면 문제가 생긴다. 너무 작으면 요청이 큐에 쌓여 응답 시간이 느려지고, 너무 크면 컨텍스트 스위칭 비용이 커져 전체 처리량이 떨어진다.
추천 꼬리질문
관련 질문
- 스레드를 늘려도 CPU 병렬성이 없는 이유는?언어 · 런타임스레드 생성 및 관리 비용과 CPU 자원 활용의 효율성이라는 공통된 개념을 다룹니다.
- 커넥션 풀을 사용하는 이유는 무엇인가?데이터베이스커넥션 풀과 스레드 풀은 모두 리소스의 재사용을 통해 생성 및 파괴 비용을 줄이는 풀링(Pooling) 개념을 공유한다.
- 프로세스와 스레드의 핵심 차이는 무엇인가?운영체제스레드 풀의 효율성을 이해하려면 먼저 프로세스와 스레드의 구조적 차이와 스레드 생성 비용에 대한 이해가 필요하다.
- 커넥션 풀 크기를 CPU 코어 수로 잡는 이유는?데이터베이스제한된 CPU 코어 위에서 동시 실행 수를 제한하는 풀링 원리를 공유한다
- 함수형 프로그래밍을 적용하는 이유는 무엇인가?언어 · 런타임