프로세스가 단일 스레드로 동작하는 방식으로 일련의 처리를 단일 스레드만으로 직렬 처리하는 프로그래밍 방법이다.
하나의 레지스터, 스택으로 표현한다. 자바스크립트가 가장 대표적인 싱글 스레드 언어이다.
자원 접근에 대한 동기화를 신경쓰지 않아도 된다. 여러 개의 스레드가 프로세스의 자원을 공유할 경우, 각 스레드가 원하는 결과를 얻게 하려면 공용 자원에 대한 접근을 제어해야 한다.
지원 접근에 대한 동기화를 신경쓰지 않아도 되므로 문맥 교환(context switch) 작업 또한 요구하지 않는다. 문맥 교환은 여러 개의 프로세스가 하나의 프로세서를 공유할 때 발생하는 작업으로 많은 비용을 필요로 한다.
프로그래밍 난이도가 쉽고, CPU 메모리를 적게 사용한다.
여러 개의 CPU를 활용하지 못한다. 싱글 스레드는 하나의 물리적 코어밖에 사용하지 못해 멀티 코어 머신에서 CPU 사용을 최적화할 수 없다.
연산량이 많은 작업을 할 경우, 그 작업이 완료되어야 다른 작업을 수행할 수 있다.
싱글 스레드 모델은 에러 처리를 못하는 경우 멈춰버리게 된다.
멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다.
또한, 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미한다.
싱글 스레드의 경우, 작업이 끝나기 전까지 사용자에게 응답하지 않지만 멀티스레드인 경우 작업을 분리해서 수행하므로 실시간으로 사용자에게 응답할 수 있다.
한 프로세스를 여러 프로세서에서 수행할 수 있으므로 싱글스레드에 비해 효율적이다.
주의 깊은 설계가 필요하며, 디버깅이 까다롭다.
단일 프로세스 시스템의 경우 효과를 기대하기 어려우며 다른 프로세스에서 스레드를 제어할 수 없다.
자원 공유의 문제가 발생한다. 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받게 된다.
문맥 교환 작업을 요구한다. 문맥 교환이란 다른 태스크(프로세스, 스레드)가 시작할 수 있도록 이미 실행 중인 태스크를 멈추는 것을 말한다.