스레드와 멀티스레딩 (Thread & Multi-threading)
프로세스 내부의 실행 흐름 단위인 스레드의 개념과 구조, 그리고 멀티 프로세스와의 차이점에 대한 정리입니다.
1. 스레드(Thread)란?
"프로세스를 구성하는 실행 흐름의 단위"
- 정의: 프로세스 내에서 실제로 작업을 수행하는 주체(실행 단위)입니다.
- 특징: 하나의 프로세스는 하나 이상의 스레드를 가질 수 있습니다.
- 예시: WinForm 프로그램 하나(프로세스) 안에서, 화면을 그려주는 스레드와 데이터를 처리하는 스레드가 동시에 각자의 역할을 수행합니다.
2. 프로세스와 스레드의 구조
전통적인 프로세스는 한 번에 하나의 일만 처리하는 단일 스레드 방식이었으나, 현대에는 멀티 스레드를 통해 하나의 프로세스가 동시에 여러 명령어를 처리합니다.
스레드의 자원 공유 방식
스레드는 독립적인 실행을 위한 최소한의 정보만 개별적으로 가지고, 나머지 자원은 프로세스 내의 다른 스레드들과 공유합니다.
| 구분 | 포함 요소 | 설명 |
|---|
| 공유 자원 | 코드, 데이터, 힙 | 프로세스의 자원을 모든 스레드가 공통으로 사용합니다. |
| 개별 자원 | 스택, 레지스터(PC), 스레드 ID | 각 스레드가 서로 다른 코드를 실행하기 위해 독자적으로 가집니다. |
3. 멀티 프로세스 vs 멀티 스레드
동시에 여러 작업을 수행한다는 점은 같지만, 실행 단위와 자원 공유 방식에 차이가 있습니다.
멀티 프로세스 (Multi-Process)
- 개념: 여러 개의 프로세스를 동시에 실행하는 것.
- 특징:
- 각 프로세스가 독립적인 메모리 영역을 가짐.
- 장점: 하나의 프로세스가 죽어도 다른 프로세스에 영향을 주지 않음 (안정성 높음).
- 단점: 자원을 공유하지 않아 메모리 낭비가 발생할 수 있고, 프로세스 간 통신(IPC)이 복잡함.
멀티 스레드 (Multi-Thread)
- 개념: 하나의 프로세스 안에서 여러 스레드를 동시에 실행하는 것.
- 특징:
프로세스의 자원(코드, 데이터, 힙)을 공유함.
장점: 자원을 공유하므로 메모리 효율이 좋고, 스레드 간 전환(Context Switching) 속도가 빠름.
* 단점: 하나의 스레드에 문제가 생기면 프로세스 전체가 종료될 수 있음. 또한, 공유 자원 동시 접근에 따른 동기화 문제(Synchronization)에 주의해야 함.

요약
- 프로세스: 자원 할당의 단위 (독립적, 무거움)
- 스레드: 실행 흐름의 단위 (공유적, 가벼움)