DWORD WINAPI SuspendThread(
__in HANDLE hThread
);
특정 쓰레드를 지목해서 그 쓰레드를 Blocked상태로 만들 수 있는 함수
hThread : Blocked상태에 두고자 하는 쓰레드의 핸들을 인자로 전달한다.
성공 시 이전에 커널 오브젝트에 저장되어 있는 쓰레드의 suspend count리턴, 실패 시 -1
suspend count : 쓰레드의 커널 오브젝트에는 SuspendThread함수의 호출 빈도수를
기록하기 위한 suspend count라 불리는 멤버가 존재
현재 실행 중인 쓰레드의 suspend count는 0이다.
그러나 이 쓰레드의 핸들을 인자로 SuspendThread함수가 호출이 되면,
suspend count는 1이 되고 쓰레드는 Blocked상태에 놓이게 된다.
그리고 다시 한번 SuspendThread함수가 호출이 되면,
suspend count는 2가 된다. 즉 SuspendThread함수는 suspend count값을 하나 증가시키는 역할을 한다.
이렇게 suspend count가 2인 상황에서는 한번의 ResumeThread호출로 바로 Ready상태가 되지 않는다. ResumeThread함수의 호출은 suspend count를 하나 감소시키는 역할을 한다.
따라서 이러한 상황에서는 두 번 호출되어야 Ready상태에 놓이게 된다.
'My Study > Function' 카테고리의 다른 글
InitializeCriticalSection (0) | 2010.02.25 |
---|---|
ResumeThread (0) | 2010.02.25 |
ExitThread (0) | 2010.02.25 |
ExitThread (0) | 2010.02.24 |
ShellExecute (0) | 2010.02.24 |