- 메모리 공간과 시스템 자원소모가 멀티 프로세스에 비해 줄어든다.
- 스레드 간의 통신이 필요한 경우 힙영역을 이용해서 데이터를 주고 받을 수 있다.
- 스레드의 Context Switch는 프로세스의 Context Switch와는 다르게 캐시메모리를 비울 필요가 없어 더 빠르다.
- 시스템의 throughput이 향상되고 자원 소모가 줄어들며 프로그램의 응답시간이 단축된다.
- 멀티 프로세스와 가장 큰 차이는 동일한 자원에 접근할 수 있게 된나는 점이다.
- 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 접근하면 엉뚱한 값을 읽거나 수정할 수 있다
이를 해결하기 위해 동기화 작업을 해준다. 동기화를 통해 작업 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 컨트롤 하는 것이다. 하지만 동기화를 사용하면 성능이 저하될 가능성이 높기 때문에 락으로 인한 병목 현상을 줄여야 한다.
멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고, Context Switch가 빠르다는 장점이 있다. 하지만 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화 문제를 안고 있다.
반면 멀티프로세스는 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 존재한다.
이 두 가지는 동시에 여러 작업을 수행한다는 점에서 같지만 적용해야 하는 시스템에 따라 적합/부적합이 구분된다. 따라서 대상 시스템의 특징에 따라 적합한 동작 방식을 선택하고 적용해야한다.