ThreadPool은 연결 수락과 요청 실행의 속도를 분리한다

연결마다 스레드를 만들지 않고 작업을 채널에 보낸다. 고정된 Worker 수가 동시 실행량을 제한하지만, 큐 적체 정책은 별도로 설계해야 한다.

01 · ACCEPTTcpListener

메인 루프가 연결을 수락하고 실행과 분리

02 · BOXJob 생성Box<dyn FnOnce() + Send + 'static>
03 · SENDSender<Job>

execute가 작업을 mpsc 채널에 기록

04 · RECEIVEShared Receiver

Arc<Mutex<Receiver>>에서 한 Worker가 다음 Job을 가져온다.

05 · RUNjob()

recv 문이 끝나 lock을 놓은 뒤 최대 N개 Worker가 병렬 실행

고정 Worker N

동시 실행 스레드 수를 제한해 연결별 무한 spawn을 피한다.

Book의 channel()

개념상 무한 버퍼다. 처리보다 수락이 빠르면 대기 메모리가 계속 늘 수 있다.

panic / Err

unwrap은 Worker 손실이나 채널 종료를 panic으로 전파할 수 있다.

01수락 중지

새 Job 진입을 막는다.

02모든 Sender drop

Receiver가 최종적으로 Err를 받는다.

03Worker loop 종료

대기 작업 처리 정책을 따른다.

04Worker join

JoinHandle::join으로 종료를 확인한다.

운영 검증: 큐 대기 시간·길이와 Worker 수를 관찰합니다. backpressure에는 bounded queue, timeout·거절 정책, panic 격리·Worker 보충 규칙이 필요합니다.