유튜브 채널 쉬운코드의 강의 영상을 보고 공부하며 작성된 글입니다.
thread pool
미리 여러개의 스레드를 만들어 두고, 작업이 들어오면 그 스레드들에게 나눠서 처리하게 하는 구조.

작업이 생길때마다 스레드를 만들고, 작업이 끝날 때 스레드를 삭제한다면 처리가 더 오래걸리게 된다. 그리고 작업 요청이 처리속도보다 더 많아지면 그만큼 스레드도 많아져서 컨텍스트 스위칭이 더 자주 발생한다. CPU낭비가 커지고 어느순간 응답불가능 상태가 될 것. 그래서 작업큐를 두고 스레드풀을 둬서 작업이 들어오면 잠자던 스레드가 깨어나서 큐에서 작업을 꺼내서 일을 하는 식으로 사용한다.
스레드 풀에는 스레드를 몇개 만들어 두는게 적절할까?
코어 개수만큼 혹은 그보다 몇개 더 많은 정도가 적당하다. 경험적으로 찾아야한다.
큐에 요청이 무한정 쌓인다면?
일을 충분히 빨리 처리하지 못하는데 작업큐에 일을 너무 빨리 넣어버리면 제한없는 큐가 너무 커져서 메모리가 터질수도 있다. 그러니 큐 크기에 제한을 둬서 작업큐가 꽉 차면 버리더라도 전체 시스템의 안정성을 유지해야 한다.
'공부 > CS' 카테고리의 다른 글
| SIGPIPE (0) | 2026.03.02 |
|---|---|
| openssl SSL_get_error 에러코드 with.C/C++ (0) | 2026.02.26 |
| openssl example with.C/C++ (0) | 2026.02.23 |
| SSL/TLS 그리고 인증서란 무엇인가 (0) | 2026.02.23 |
| I/O Multiplexing epoll 채팅서버 만들기 with.C/C++ (0) | 2026.02.21 |