Thread (스레드)
Light Weight Process
라고 부르기도 한다.
- 프로세스 끼리는 서로 통신을 위해
IPC (Inter Process Comminucation)
이 필요한데, 스레드는 IPC
없이도 서로 데이터를 주고 받을 수 있다.
- 프로세스 내부에서 생성하므로, 하나의 프로세스 안에서 생성된 스레드들은 프로세스의 모든 데이터에 접근이 가능하다.

과거에는 단일 코어로 이루어진 CPU에 프로세스들을 아주 짧은 시간동안 번갈아 실행시키는 방식의 Multi Tasking
에 집중했다.
하지만 최근의 CPU들은 대부분 멀티코어를 지원하므로 프로세스를 잘게 쪼개 CPU의 코어들에게 나누어 주는 Multi Processing
에 대한 개념이 등장하게 되었다.
이를 위해 만들어진 것이 바로 스레드이다. 스레드는 프로세스를 잘게 쪼개 병렬적으로 실행시킬 수 있게 만들어준다.
Thread의 장점
- 사용자에 대한 응답성이 향상된다.
- 특정 작업 도중에 값을 요청하는 경우 프로세스 두개로 이를 구성하면 IPC 통신을 통해 받아와야 하지만, 스레드로 작업하는 함수와 값을 요청하는 함수를 분리해두면 더 빨리 값을 받아올 수 있다.
- 자원 공유 효율이 향상된다.
- 작업이 분리되어 코드가 간결해 질 수 있다.
Thread의 단점
- 하나의 스레드에서 문제가 발생하면 전체 프로세스가 영향을 받는다.
- 스레드를 너무 많이 생성하면 Context Switching이 자주 발생하여 성능이 오히려 저하된다.
- 스레드도 프로세스와 같이 스케쥴링 하는 OS에서 이러한 문제가 발생함.