프로그래밍

[프로그래밍] Thread Pool

Victory_HA 2021. 6. 6. 16:50

Thread Pool

  • Thread를 미리 만들어 놓은 공간입니다.
  • Thread Pool의 크기는 작업 실행을 위해 미리 생성한 스레드 수입니다.
  • 위키에 의하면 "컴퓨터 프로그램에서 동시실행을 위한 소프트웨어 디자인패턴" 이라고 설명 돼 있습니다.

필요성

  • Thread가 생성될 때 운영체제(OS)가 요청을 받아들여 메모리공간을 확보해주고, 그 메모리를 스레드에게 할당해준다.
  • Thread는 동일한 메모리영역에서 생성되고 관리되지만, 생성/수거에 드는 비용을 무시할 수 없다.
  • 생성/수거 비용 절약을 위해 Thread를 미리 생성해두는 것 입니다.

동작 원리

  • 프로그램(Application)에서 사용자의 요청(Task)를 작업큐(Queue)에 넣습니다.
  • Thread Pool은 작업큐에 들어온 요청을 미리 생성해놓은 Tread들에게 할당합니다.
  • 요청을 다 처리한 Thread들은 다시 프로그램(Application)에게 결과값을 리턴합니다.

장점

  • Thread를 미리 만들어 놓음으로 써, 쓸데없는 생성/수거에 드는 비용을 절약합니다.
  • Thread를 재사용할 수 있으므로 시스템 자원을 줄일 수 있습니다.
  • 작업을 요청시 이미 스레드가 대기중인 상태이기때문에서 작업을 실행하는데 딜레이가 발생하지 않습니다.

단점

  • Thread Pool에 Thread를 너무 많이 생성해 두었다가 사용하지 않으면 메모리 낭비가 발생할 수 있습니다.

참고