uintptr_t _beginthread( void( *start_address )( void * ), --------①
unsigned stack_size, --------②
void *arglist --------③
);
uintptr_t _beginthreadex( void *security, --------①
unsigned stack_size, --------② unsigned ( *start_address )( void * ), --------③ void *arglist, --------④ unsigned initflag, --------⑤ unsigned *thrdaddr --------⑥ );
함수설명 :
쓰래드 생성 함수.
① security :
새 쓰래드의 실행을 시작하는 루틴의 시작 주소
② stack_size :
새 쓰래드의 스택 크기를 지정하며 0을 지정할 경우 알아서 할당된다.
③ (*start_address)(void*) :
함수 포인터터를 넘긴다.
④ arglist :
새 쓰래드에 전달할 인자이다. void* 형이기 때문에 다른 데이터형들이 가능하다.(구조체포인터도 가능) 필요 없을경우 NULL을 넣어준다.
⑤ initflag :
새 쓰래드의 초기 상태. ex)CREATE_SUSPENDED면 ResumeTread로 실행
⑥ thrdaddr :
쓰래드 식별자를 수신하는 32비트 변수, NULL 사용가능
_beginthreadex를 사용할 때 주의할 사항으로 c언어와 c++에서 구별해야 할 점이있다. 그건 Thread 함수를 만들때인데 c언어로 작업할 경우 ThreadMain의 반환값을 DWORD로 사용하여도 되지만, C++에서 사용할 경우에는 unsigned int(UINT) 형으로 사용해야 한다. 이러한 이유는 C++컴파일러가 타입검사가 좀더 엄격하기 때문이다.
'Programming > Windows&C#' 카테고리의 다른 글
[Windows/WinAPI] WindowsAPI / DuplicateHandle (0) | 2013.11.17 |
---|---|
[Windows/WinAPI] 자식 프로세스를 만들고 값을 리턴받음 (2) | 2013.11.16 |
[Windows/WinAPI] Thread 생성 _beginthreadex사용 (실습7) (0) | 2013.11.14 |
[Windows/WinAPI] GetCurrentProcess, GetCurrentProcessId, ResumeThread, WaitForSingleObject (0) | 2013.10.25 |
[Windows/WinAPI] CreateProcess (0) | 2013.10.25 |