쓰레드와 멀티 쓰레드는 프로세스와 멀티 프로세스와 비교하기 좋다. 일단, 비교를 하기 전에 쓰레드와 멀티 쓰레드가 무엇인지부터 알아봐야 한다.
프로세스는 이 글을, 멀티 프로세스는 이 글을 참고하면 된다.
쓰레드는 한 프로세스 내에서 실행되는 기능의 단위이다. 이 쓰레드는 각각 독립적인 기능을 수행하게 된다.
쓰레드는 독립적인 메모리와 Program Counter register가 필요하다.
쓰레드가 독립적인 스택 메모리 영역이 필요한 이유는 다음과 같다.
스택 영역은 함수 호출 시 전달되는 인자를 저장하기 위한 메모리 영역인데 쓰레드가 독립적인 기능을 수행한다는 것은 독립적인 함수를 호출한다는 것과 같은 말이다. 때문에 각 쓰레드가 독립적인 기능을 수행하기 위해서는 쓰레드마다 스택 메모리 영역이 독립적이어야 한다.
쓰레드가 함수를 호출하기 위해 인자 전달, Resturn Address 저장, 함수 내 지역 변수 저장 등 독립적인 스택 메모리 공간을 필요로 한다.
멀티 쓰레드에서는 각 쓰레드마다 PC register를 가지고 있어야 한다.
왜냐하면 프로세스 내에서도 쓰레드끼리 Context switch가 일어나게 되는데 PC register에 Code Address가 저장되어 있어야 실행을 할 수 있기 때문이다.
멀티 쓰레드는 한 프로세스 안에 여러 쓰레드가 있는 것이다. 이때, 각 쓰레드들은 프로세스의 스택 메모리를 제외한 나머지 메모리 영역을 공유할 수 있다.
멀티 쓰레드는 하나의 프로세스가 여러 일을 수행할 수 있게 해준다. 다시 말해서 하나의 프로세스에서 각 쓰레드가 서로 다른 작업을 하면서 여러 작업을 병렬로 처리할 수 있게 된다.