TODAY : / TOTAL :

멀티스레드(MultiThread) - 2

  • Share this:
반응형
ㅇ 스레드의 종료
 - 스레드 함수가 리턴되는 경우
 - 스레드 함수 내에서 ExitThread() 함수가 호출되는 경우
 - TerminateThread(HANDLE ThreadHandle) 함수가 호출 되는 경우 ( 외부에서 스레드 핸들을 호출시켜 종료시킬수 있음)
 - 주 스레드가 종료 되는 경우

* 스레드 종료함수
void ExitThread ( DWORD dwExitCode);
                               // 종료 코드 
 
BOOL TerminateThread ( HANDLE hThread, DWORD dwExitCode); 
                                                 ( 
종료할 스레드를 가리키는 핸들,종 코드 )

 
 

ㅇ 스레드 조작 용어
 - 스레드 스케줄링(thread scheduling) 
윈도우가 각 스레드에게 CPU 시간을 적절히 분배하기 위한 정책
 
 - 우선순위 클래스(priority class)
프로세스 속성으로, 한 프로세스가 생성한 스레드는 모두 동일한 우선순위 클래스를 가짐
 
 - 우선순위 레벨(priority level) 
스레드 속성으로, 한 프로세스에 속한 스레드 사이에서 상대적인 우선순위를 결정할 때 사용
 
 - 기초 우선순위(base priority)
우선순위 클래스와 우선순위 레벨을 결합한 값으로, 스레드 스케줄링에 사용

 
ㅇ  우선순위 클래스
REALTIME_PRIORITY_CLASS(실시간)
HIGH_PRIORITY_CLASS(높음)
ABOVE_NORMAL_PRIORITY_CLASS(보통 초과; 윈도우2000/XP/2003)
NORMAL_PRIORITY_CLASS(보통)
BELOW_NORMAL_PRIORITY_CLASS(보통 미만; 윈도우2000/XP/2003)
IDLE_PRIORITY_CLASS(낮음)


ㅇ 우선순위 레벨 조작 함수
 
BOOL SetThreadPriority (
    HANDLE hThread, // 스레드 핸들
    int nPriority // 우선순위 레벨값
) ;

 
int GetThreadPriority ( 

    HANDLE hThread // 스레드
); 
 
 
ㅇ 스레드 종료 대기 함수
 - WaitForSingleObject(HANDLE hHandle, DWORD dwMS) 함수
 * 주 스레드에서 다른 스레드가 종료될수있도록 대기시켜줄때 사용.
 * 주 스레드 아래 한개의 스레드만 사용될때 사용 가능.

- WaitForMultipleObject() 함수
 * 두개 이상의 스레드를 대기할 때 사용.

DWORD WaitForMultipleObjects (
   DWORD nCount, // 스레드 갯수
   const HANDLE* lpHandles, // 스레드 핸들
   BOOL bWaitAll, // 스레드 전체를 기다릴지를 결정
   DWORD dwMilliseconds // 대기 시간
) ;

Return Value :: 성공 - 핸들배열의  인덱스  / 실패 - WAIT_FAILED 

WaitForMultipleObject() 함수 사용 예) 

 ㅇ 실행 중지 함수
 - SuspendThread(HANDLE hHandle);  ::  실행 중지
 - ResumeThread(
HANDLE hHandle);  ::  재실행
    * Return Value : 중지한 횟수

 - Sleep(MS);
  * 스레드가 실행을 멈추고 일정시간(ms)동안 대기.
  * 0을 입력해도 일단 Sleep이 호출된 상황으로,스레드가 종료되고 다음스레드로 넘어가게 됨.
 
반응형

SEARCH

태그로 찾아보기