본문 바로가기

My Study/Function

SuspendThread

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