<<Thread>>
*스레드 생성
: 스레드 생성시.. 프로세스에 'CPU에 레지스터'와 '메모리 영역에 static영역'이 추가된다.
※ 프로세스의 구성요소는...
CPU에 레지스터, 메모리 영역에 code영역, 커널오브젝트, Heap영역, static영역으로 구성된다.
** CreateThread API 함수
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // 커널 오브젝트에 대한 보안 속성
DWORD dwStackSize, // 스레드가 사용할 스택 영역의 크기
LPTHREAD_START_ROUTINE lpStartAddress, // 스레드 오브젝트가 실행할 시작점
LPVOID lpParameter, // 생성될 스레드에게 전달할 포인터
DWORD dwCreationFlags, // 스레드 생성 옵션
LPDWORD lpThreadId // 생성된 스레드의 아이디
);
*스레드 종료
: 스레드 함수가 리턴, 스레드 함수가 ExitThread API 함수 호출, 외부 스레드에서 TerminateThread 호출
(ExitThread 보다는 리턴을 권장함, 이유는 ExitThread하면 C Runtime lib의 각종 자원해제 불가)
** 스레드 함수가 Return; (정상종료::자원해제완료)
** ExitThread API 함수 (정상종료::자원해제불가)
VOID ExitThread(
UINT uExitCode // 스레드 종료 코드
);
** TerminateThread API 함수 (thread 강제종료)
BOOL TerminateThread(
HANDLE hThread, // 스레드 핸들
DWORD dwExitCode // 종료 코드
);
** GetExitCodeThread API 함수 (종료상태확인)
BOOL GetExitCodeThread(
HANDLE hThread, // 확인할 스레드 핸들
LPDWORD lpExitCode // 종료 코드
);
: return 값이 STILL_ACTIVE 면 아직 스레드가 실행중인 것이고,
다른 값이면 아래의 셋중에 하나이다.
1) ExitThread, TerminateThread 종료될때 공통들어가는 인자값
2) 정상적으로 스레드 함수가 종료될때 경우의 리턴값
3) 스레드를 종료하는 과정에서 발생되는 예외값
'◆ 무한한 가능성 > & Visual C/C++' 카테고리의 다른 글
Thread in C runtime library (다중스레드, Multi-Thread) (0) | 2009.08.19 |
---|---|
Thread example code. - Thread03 (0) | 2009.08.19 |
Kernel Object (0) | 2009.08.17 |
Safe String Reference (0) | 2009.06.23 |
[C/C++] Code Convention (헝가리언 표기법) (0) | 2009.05.12 |