쓰레드의 상태 변화
- Windows에서는 상태가 변화하는 주체가 프로세스가 아니라 쓰레드이다.
https://pwnkidh8n.tistory.com/123?category=871712
- 이제 프로세스에서 쓰레드로 바꿔 생각하면 된다.
Suspend & Resume
- 특정 쓰레드를 지목하여 Blocked 상태 혹은 Ready 상태로 이동 시킬 수 있다.
쓰레드를 Blocked 시키는 함수 : SuspendThread()
hThread | Blocked 상태에 두고자 하는 쓰레드의 핸들 |
쓰레드를 Ready 시키는 함수 : ResumeThread()
hThread | Ready 상태에 두고자 하는 쓰레드의 핸들 |
쓰레드의 커널 오브젝트에는 SuspenThread함수의 호출 빈도수를 기록하기 위한 Suspend Count라는 멤버가 있다.
SuspendThread 함수는 Suspend Count 값을 증가하는 역할을 한다.
ResumeThread 함수는 Suspend Count 값을 감소시키는 역할을 한다.
즉, Suspend Count가 2인 상황에서는 한 번의 ResumeThread 호출로 바로 Ready 상태가 되지 않는다. (두 번 호출되어야 함)
※ CreateThread 함수 호출 시 다음 인자에 CREATE_SUSPENDED가 전달되면, 쓰레드는 생성되자마자 Suspend Count가 1이다.
12.4 쓰레드의 우선순위 컨트롤 (0) | 2020.04.19 |
---|---|
12.2 쓰레드의 성격과 특성 (0) | 2020.04.19 |
12.1 Windows에서의 쓰레드 생성과 소멸 (0) | 2020.04.19 |
11.2 쓰레드 구현 모델에 따른 구분 (0) | 2020.04.19 |
11.1 쓰레드란 무엇인가? (0) | 2020.04.19 |
댓글 영역