멀티 스레드
멀티 스레드(multi thread)는 스레드를 여러 개 생성해 스레드들이 각자 다른 작업을 처리하는 것을 의미한다. 멀티 스레드는 스레드 간에 힙, 데이터, 코드 영역을 공유한다. 그래서 콘텍스트 스위칭할 때 오버헤드가 적게 발생하고 IPC를 사용하지 않아도 되어 멀티 프로세스의 단점을 보완할 수 있다. 따라서 독립적인 메모리 공간을 갖는 프로세스를 여러 개 생성하는 것보다 스레드를 여러 개 생성하는 것이 자원을 효율적으로 사용할 수 있다. 그리고 스레드 간 자원 공유가 프로세스 간 자원 공유보다 시스템 처리 비용이 적고 프로그램 응답 시간도 단축된다.
하지만 스택 영역을 제외한 메모리 영역을 다른 스레드와 공유하므로 공유 자원에 대한 동기화가 필수다. 또한, 스레드에 문제가 생기면 프로세스 내 다른 스레드에 영향을 미칠 수 있다.
▲ 그림 1-16 멀티 스레드 구조