스레드 풀

지식저장공간·2023년 3월 2일
0

운영체제

목록 보기
13/15

스레드 풀

스레드 풀이 존재하지 않을 때

하나의 요청마다 하나의 스레드가 처리할 수 있게 한다. 1:1 맵핑

요청마다 스레드를 생성하고 폐기하게 되면 스레드의 생성에 시간을 소비하기 때문에 요청 처리가 더 오래 걸린다.

처리 속도 < 요청 속도

스레드마다 메모리를 점유하기 때문에 메모리 여유 공간이 사라진다.

스레드 풀 형성

Queue에 request들이 들어오게 되면 스레드 풀에 형성되어 있는 스레드를 1:1 맵핑하여 요청을 처리하고, 사용한 스레드는 스레드 풀에 반납(release)하게 된다.

-> 스레드 생성시간을 감소 시킬 수 있으며, 스레드가 무제한으로 생성되는 것을 방지한다.

스레드 풀 사례

여러 작업을 동시에 처리해야할 때

스레드 풀 팁

1. 몇개의 스레드가 적절한가?

CPU bound 프로세스의 경우 CPU 코어보다 1~2개 많이

I/O bound 프로세스의 경우 CPU 코어보다 1.5~3배 성능테스트를 해보며 찾는다.

스레드 풀에서 실행될 task 개수에 제한이 없다면

스레드 풀에 존재하는 스레드들이 모든 요청을 다 처리중일 경우 더이상 처리할 수 있는 스레드가 존재하지 않기 때문에 스레드 풀의 요청을 저장하는 Queue의 크기를 확인하고 제한해야한다. Queue에 제한이 없는경우 request들이 무한히 쌓인다.



출처 : 쉬운코드 유튜브

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글