정의
- 프로세스 내에서 실행되는 여러 흐름의 단위를 뜻합니다.
특징
- 쓰레드는 프로세스 내에서 각각 스택만 따로 할당받고, Code/Data/Heap 영역은 공유합니다.
- 쓰레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들(Ex: 힙 영역)을 같은 프로세스 내에 쓰레드끼리 공유하면서 실행됩니다.
- 같은 프로세스 안에 있는 여러 쓰레드들은 같은 힙 영역을 공유함. 반면 프로세스는 다른 프로세스의 메모리에 직접 접근은 불가합니다.
- 각각의 쓰레드는 별도의 레지스터와 스택을 가지고 있지만, 힙 영역은 서로 읽고 쓸 수 있습니다.
- 한 쓰레드가 프로세스 자원을 변경하면, 다른 이웃 쓰레드(sibling thread)도 그 변경 결과를 즉시 볼 수 있습니다.
위 사진처럼 Code/Data/Heap 영역은 공유하지만, 각 쓰레드 별로 스택이 할당됩니다.