Thread(스레드)
- Light Weight Process라고도 함
- 프로세스
- 프로세스간에는 각 프로세스의 데이터 접근이 불가
- 스레드
- 하나의 프로세스에 여러개의 스레드 생성 가능
- 스레드들은 동시에 실행 가능
- 프로세스 안에 있으므로, 프로세스와 Date,Code,Heap영역은 공유하고 스레드 각자의 스택과 레지스터를 갖는다.
Thread는 각기 실행이 가능한 stack이 존재한다.
Multi Thread(멀티 스레드)
- 소프트웨어 병행 작업 처리를 위해 Multi Thread를 사용함
멀티 프로세싱과 Thread
- 멀티 태스킹과 멀티 프로세싱
- 최근 CPU는 멀티코어를 가지므로, Thread를 여러 개 만들어, 멀티 코어의 활용도를 높임
멀티 스레딩
- 말 그대로 프로세스내에서 하나의 스레드가 아닌 여러개의 스레드를 형성하여 명령어들을 처리하는걸 의미한다.
Thread 장점
- 사용자에 대한 응답성 향상
- 자원 공유 효율
- IPC기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요없음
- 프로세스안에 있으므로, 프로세스의 데이터를 모두 접근 가능
- 작업이 분리되어 코드가 간결(이건 작성하기 나름이다.)
Thread 단점
- 스레드 중 한 스레드만 문제가 있어도, 프로세스 전체가 영향을 받음
- 멀티 프로세스
- 멀티 스레드
- 스레드를 많이 생성하면, Context Switching이 많이 일어나서 성능이 저하된다.
- 동기화 이슈로 비정상적으로 동작가능 ( 동기화 코드를 적절히 추가해줘야 한다. )
Thread vs Process
- 프로세스는 독립적, 스레드는 프로세스의 서브셋
- 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유
- 프로세스는 자신만의 주소영역을 가짐, 스레드는 주소영역 공유
- 프로세스간에는 IPC기법으로 통신해야 함, 스레드는 필요없음
정리
- Thread개념정리
- 프로세스와 달리 스레드간 자원 공유
- 스레드 장점
- CPU활용도를 높이고
- 성능 개선 가능
- 응답성 향상
- 자원공유 효율(IPC를 안써도 됨)
- 스레드 단점
- 하나의 스레드가 문제될 시, 프로세스 전반에 영향을 미침
- 여러 스레드 생성시 성능 저하 가능