프로세스
실행 파일이 실행되어 메모리에 적재된 인스턴스
하나 이상의 스레드Thread로 구성
스레드
운영체제가 CPU 시간을 할당 하는 기본 단위
스레드
멀티 스레드의 장점
- 사용자 대화형 프로그램에서 응답성을 높일 수 있다
- 경제성 - 메모리와 자원을 할당하는 비용 절감
- 멀티 프로세서의 활용 - 멀티 프로세스 방식에 비해 멀티 스레드 방식이 자원 공유가 쉽다
멀티 스레드의 단점
- context switching, 동기화 등의 이유 때문에 싱글 코어 멀티 스레딩은 스레드 생성 시간이 오히려 오버헤드로 작용해 단일 스레드보다 느리다.
- 공유하는 자원에 동시에 접근하는 경우, 프로세스와는 달리 스레드는 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있다. 따라서 동기화가 필요!
- 멀티 스레딩을 위해서는 운영체제의 지원이 필요하다.
- 구현하기 까다롭고 테스트가 쉽지 않다.
- 과다한 사용은 성능 저하 야기 - 작업간 전환(Context Switching)
- 자식 스레드의 문제가 생기면 전체 프로세스에 영향을 끼침