Thread(쓰레드)란?
- Thread : 실. 실행의 흐름이 마치 실 처럼 흘러간다.
- execution의 가장 작은 단위
- 각각 stack과 register set을 가진다.

멀티스레드 프로세스 : 흐름이 여러개.
Instruction이 실행 → register에 있는 값을 쓰는 행위
- So, Thread에 따라 register와 Stack이 달라짐.
- 코드와 데이터, 파일들은 프로세스 당 하나만 있으면 된다.
쓰레드를 쓰는 이유
- Parallelism에 있어서 좋은 성능
- 1개 프로세스 + 3개 쓰레드 > 3개 프로세스 + 각 1개 쓰레드
- 프로세스를 생성하는게 더 별로다.
- 프로세스 : fork(), exec()하는데 시간, 메모리 소모한다.
- 쓰레드 : pthread_create() 하나면 끝 (메모리 등을 생성x)
- 리소스를 효율적으로 사용
- same task를 parallel 하게 돌릴 때, 별도의 프로세스를 만드는건 낭비임.
- 프로세스 생성 : resource-intensive
- 쓰레드들끼리 데이터를 공유하기 쉬움 (보안성 ↓)
- 프로세스들끼리는 데이터를 공유하려면 IPC(ex: Pipe)를 사용
- Responsiveness(응답이 빠름), Resource Sharing, Economy, Scalability(확장하기 쉬움)
Concurrency vs Parallelism
