server interface

연결 처리 책임을 풀 안으로 밀어 넣기

호출 코드는 execute에 작업을 맡기고, 스레드 생성 수와 대기열 관리는 ThreadPool 내부 구현으로 감춥니다.

before 요청마다 새 스레드
incoming()

연결이 들어올 때마다 반복합니다.

thread::spawn

매 요청마다 운영체제 스레드를 새로 만듭니다.

위험

요청 폭주 시 스레드 수도 제한 없이 증가합니다.

after 고정 크기 스레드 풀
ThreadPool::new(4)

워커 수를 먼저 제한합니다.

pool.execute

작업 클로저를 풀에 제출합니다.

효과

동시성은 얻고 리소스 상한은 유지합니다.

API
호출부는 spawn과 비슷한 감각을 유지합니다.

구현
워커, 채널, 큐는 라이브러리 내부로 숨깁니다.

학습 포인트
컴파일러 에러를 따라 필요한 타입을 채워갑니다.