스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다.
Data parallelism (데이터 병렬 실행)
데이터를 부분화 하여 동일한 연산을 수행하는 스레드나 프로세스를 병렬적으로 실행하는 방법
Task parallelism (태스크 병렬 실행)
각 스레드나 프로세스가 서로 다른 연산을 수행하고 병렬적으로 실행하는 방법
데이터는 같을 수도 다를 수도 있다. 예를 들어 하나의 데이터로 여러 통계 데이터를 출력하는 프로그램이라면 하나의 데이터를 각자의 스레드가 처리할 것이다.
'암달의 법칙(Amdahl's law)'은 컴퓨터 프로그램은 프로세서를 아무리 병렬화 시켜도 병렬처리가 가능한 부분(전체 처리량의 약 5%)과 불가능한(순차 처리) 부분으로 구성되므로 더 이상 성능이 향상되지 않는 한계가 존재한다는 법칙이다.
- Many-to-One
Solaris Green threads
GNU Portable Threads
- One-to-One
Windows
Linux
- Many-to-Many
Pool안에 thread를 미리 만들어 놓고 대기 상태로 놓는다.
요청이 들어올 때 쓰레드를 활성화 상태로 놓는다.
작업이 끝나면 다시 대기 상태로 놓는다.