Single Thread
- main 스레드에서 작업 진행,작업을 순차적으로 진행됨
- 하나의 프로세스에서 오직 하나의 스레드로만 진행
- 단일 레지스터와 스택으로 구성
- Context Switching 작업을 요구하지 않음
- 동시성 제어에 대한 처리를 신경 쓰지 않아도 됨
Single Thread장점
- 자원 접근에 대한 동기화를 고려하지 않아도 됩니다.
- 여러 개의 스레드가 프로세스의 자원을 공유하면,각 스레드가 자원 접근에 대해서 접근 제어를 해야합니다.
- 모든 스레드가 자원에 동시에 접근하거나, 동일한 작업을 실행하면 Exception이 발생합니다.
- Single Thread 환경에서는 동기화에 대해서 고려할 필요가 없습니다.
- Context switch(문맥 교환) 작업을 요구하지 않습니다.
- 현재 진행하고 있는 Task(Process,Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정을 말합니다.
- Mulit-Thread 환경에서는 Context switching을 통해서 실시간처럼 보이게 처리합니다.
- Single Thread에서는 Context switching 필요하지 않음으로 Context switching에 대한 비용이 발생하지 않습니다.
- 단순한 계산 작업이라면 Muilt-Thread보다 Single-Thread 기반으로 개발하는 것이 더 효율적입니다.
- 간단한 계산일때 Mulit-thread환경에서 작업을하면 context-switching 발생으로 Single-Thread보다 오히려 시간이 더 발생 할 수 있습니다.
- 개발 난이도가 쉽고,CPU,Memory를 적게 사용합니다.(사용 비용을 줄일 수 있습니다.)
Single Thread 단점
- Multi CPU를 활용하지 못합니다.
- 연산량이 많은 작업의 경우 그 작업이 완료되어야 다음 직업을 진행 할 수 있습니다.
- 싱글 스레드는 Error 처리를 못하는 경우 중지됩니다.