반응형
ㅇ 스레드의 종료
- 스레드 함수가 리턴되는 경우
- 스레드 함수 내에서 ExitThread() 함수가 호출되는 경우
- TerminateThread(HANDLE ThreadHandle) 함수가 호출 되는 경우 ( 외부에서 스레드 핸들을 호출시켜 종료시킬수 있음)
- 주 스레드가 종료 되는 경우
* 스레드 종료함수
- 스레드 함수가 리턴되는 경우
- 스레드 함수 내에서 ExitThread() 함수가 호출되는 경우
- TerminateThread(HANDLE ThreadHandle) 함수가 호출 되는 경우 ( 외부에서 스레드 핸들을 호출시켜 종료시킬수 있음)
- 주 스레드가 종료 되는 경우
* 스레드 종료함수
void ExitThread (
DWORD dwExitCode);
// 종료 코드
BOOL TerminateThread (
( 종료할 스레드를 가리키는 핸들,종료 코드 ) |
•
ㅇ 스레드 조작 용어
- 스레드 스케줄링(thread scheduling)
윈도우가 각 스레드에게 CPU 시간을 적절히 분배하기 위한 정책
- 우선순위 클래스(priority class)
프로세스 속성으로, 한 프로세스가 생성한 스레드는 모두 동일한 우선순위 클래스를 가짐
- 우선순위 레벨(priority level)
스레드 속성으로, 한 프로세스에 속한 스레드 사이에서 상대적인 우선순위를 결정할 때 사용
- 기초 우선순위(base priority)
우선순위 클래스와 우선순위 레벨을 결합한 값으로, 스레드 스케줄링에 사용
ㅇ 우선순위 클래스
ㅇ 우선순위 레벨 조작 함수
ㅇ 스레드 종료 대기 함수
- WaitForSingleObject(HANDLE hHandle, DWORD dwMS) 함수
* 주 스레드에서 다른 스레드가 종료될수있도록 대기시켜줄때 사용.
* 주 스레드 아래 한개의 스레드만 사용될때 사용 가능.
- WaitForMultipleObject() 함수
* 두개 이상의 스레드를 대기할 때 사용.
WaitForMultipleObject() 함수 사용 예)
ㅇ 실행 중지 함수
- SuspendThread(HANDLE hHandle); :: 실행 중지
- ResumeThread( HANDLE hHandle); :: 재실행
* Return Value : 중지한 횟수
- Sleep(MS);
* 스레드가 실행을 멈추고 일정시간(ms)동안 대기.
* 0을 입력해도 일단 Sleep이 호출된 상황으로,스레드가 종료되고 다음스레드로 넘어가게 됨.
ㅇ 우선순위 클래스
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이 호출된 상황으로,스레드가 종료되고 다음스레드로 넘어가게 됨.
반응형