CreateThread, _beginthreadex 차이점
Thead ( CreateThread, _beginthreadex 차이점 )
|
CreateThread |
_beginthreadex |
제공 |
Win32 API |
C Run Time Library |
역할 |
Thread 생성 함수 |
Thread 생성 함수 |
Return 자료형, 값 |
자료형 : HANDLE |
자료형 : unsigend long |
함수호출 규약 |
__stdcall |
__stdcall |
Thread ID 데이터 타입 |
DWORD |
UNIT |
Thread 함수의 |
DWORD |
UNIT |
|
ExitThread(DWORD dwExitCode) |
_beginthreadex 가 호출하는 |
CreateThread 대신 _beginthreadex 를 써야하는 경우
1. 부동 소수형 변수나 함수를 사용할 경우
2. C의 malloc과 free나 C++ 의 new와 delete 를 사용할경우
3. stdio.h 나 io.h에서 어떤 함수를 호출한다면
4. strtok() 나 rand() 와 같이 정적 버퍼를 사용 하는 어떤 런타임 함수를 호출할 경우
-
strtok 같은것
-
c 런타임 함수들중 전역 자원을 쓰는 함수들이 있음
-
이런경우 멀티스레드 환경에서 문제가 될수 있기때문에
-
c 런타임 함수들을 위한 각각의 전역자원공간을 스레드마다
-
할당하는 함수가 _beginthread , _beginthreadex
-
이 함수들도 내부적으로는 CreateThread를 호출
위 4가지 중 해당이 안된다면 CreateThread 함수를 사용하는 것이 유용함
제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!