멀티스레드 개념 정리

프로그래밍/C/C++ 2014. 1. 28. 03:38

 CPU 코어 하나에 여러개의 스레드를 한 명령어씩 돌아가며 처리한다.

(OS가 각 스레드에게 CPU를 사용할수 있는 시간을 할당 즉 스케줄링 한다. 스케줄 순서에 따라 번갈아가며 수행된다)

 

void thread()
{
    int a = 0;
    int b = 0;
    a++; //명령문 1
    b++;// 명령문 2
    a += b; //명령문 3
}
이러한 쓰레드가 3개가 있다면,
코어
스레드 a의 명령문 1를 수행한다.
스레드 a의 스택정보와 레지스트 정보를 임시 저장한다.

 

스레드 b의 스택정보와 레지스트 정보를 불러온다.
스레드 b의 명령문 1를 수행한다.
스레드 b의 스택정보와 레지스트 정보를 임시 저장한다.

 

스레트 c의 명령문 1를 수행한다
스레드 c의 스택정보와 레지스트 정보를 임시 저장한다.

 

스레드 a의 스택정보와 레지스트 정보를 불러온다.
스레드 a의 명령문 2를 수행한다.

 

다시 스레드 b의...(이하 반복)
를 수행한다.

만약에 코어가 두 개가 있을시에는
상대방 코어가 처리하고 있지 않은 스레드의 명령문을 처리한다.