TcpListener메인 루프가 연결을 수락하고 실행과 분리
연결마다 스레드를 만들지 않고 작업을 채널에 보낸다. 고정된 Worker 수가 동시 실행량을 제한하지만, 큐 적체 정책은 별도로 설계해야 한다.
TcpListener메인 루프가 연결을 수락하고 실행과 분리
Job 생성Box<dyn FnOnce() + Send + 'static>Sender<Job>execute가 작업을 mpsc 채널에 기록
Arc<Mutex<Receiver>>에서 한 Worker가 다음 Job을 가져온다.
job()recv 문이 끝나 lock을 놓은 뒤 최대 N개 Worker가 병렬 실행
동시 실행 스레드 수를 제한해 연결별 무한 spawn을 피한다.
channel()개념상 무한 버퍼다. 처리보다 수락이 빠르면 대기 메모리가 계속 늘 수 있다.
unwrap은 Worker 손실이나 채널 종료를 panic으로 전파할 수 있다.
새 Job 진입을 막는다.
Receiver가 최종적으로 Err를 받는다.
대기 작업 처리 정책을 따른다.
JoinHandle::join으로 종료를 확인한다.
운영 검증: 큐 대기 시간·길이와 Worker 수를 관찰합니다. backpressure에는 bounded queue, timeout·거절 정책, panic 격리·Worker 보충 규칙이 필요합니다.