본문 바로가기

Programming/Windows&C#

[Windows/WinAPI] _beginthread, _beginthreadex

728x90
반응형

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++컴파일러가 타입검사가 좀더 엄격하기 때문이다.

반응형