| 구분 | 멀티프로세싱 | 멀티쓰레드 |
|---|---|---|
| 실행 단위 | 독립된 프로세스 | 프로세스 내의 여러 쓰레드 |
| 메모리 구조 | 프로세스마다 고유한 메모리 공간 보유 | 프로세스 내 공유 메모리 사용 |
| 프로세스/쓰레드 생성 비용 | 상대적으로 큼 | 비교적 작음 |
| 프로세스/쓰레드 통신 방식 | IPC(파이프, 소켓, 메시지 큐 등) | 전역 메모리/변수 공유 (동기화 필요) |
| 안정성(독립성) | 다른 프로세스에 영향 적음 (독립성 높음) | 같은 프로세스 내 쓰레드 간 충돌 가능성 존재 |
| 주 사용 예 | 대규모 서버, 배치 작업 등 | I/O가 많은 애플리케이션, UI/게임 등 |
멀티프로세싱
+-------------+
CPU Core1 | Process #1 |
| (독립 메모리)|
+-------------+
+-------------+
CPU Core2 | Process #2 |
| (독립 메모리)|
+-------------+
멀티쓰레드
+-------------------------------------------------+
| Single Process |
| |
| +------------------+ +------------------+ |
| | Thread #1 | | Thread #2 | |
| | (Shared 메모리) | | (Shared 메모리) | |
| +------------------+ +------------------+ |
| ... Thread #3, #4 ... |
+-------------------------------------------------+