- 프로세스
- 실행 중인 프로그램 하나, 메모리를 할당받고 독립적으로 돌아감
- 스레드
- 특징
- 프로세스 안에서 실행 흐름을 나눈 단위
- 프로세스가 집 전체라면, 스레드는 그 집 안에 따로 움직이는 사람들
- 하나의 프로세스에는 기본적으로 메인 스레드가 있고, 추가로 여러 개의 스레드를 만들 수 있음
- 한 프로그램 안에서 동시에 여러 작업을 처리할 수 있게 해주는 게 스레드
- 같은 프로세스 안에 있는 스레드들은 메모리(힙, 스태틱 영역)을 공유한다.
- 공유 덕분에 데이터 교환은 쉽지만, 동시에 접근하면 충돌이 날 수 있음 그래서 동기화 같은 개념이 필요하다.
- 종류
- 싱글 스레드
- 하나의 스레드만 사용 → 프로그램 실행 흐름이 하나
- main()만 있는 단순 프로그램
- 멀티 스레드
- 여러 스레드 동시에 실행
- 예시
- 채팅 프로그램 → 한 스레드는 메시지 수신, 다른 스레드는 화면 출력, 또 다른 건 파일 업로드