'); }
'); }
1. CreateThread :
Windows API함수이며 몇몇
몇몇 crt 함수 (malloc(), fopen(), _open(), strtok(), ctime(), or localtime() 등등)가 만들어 놓은 static data 및 static buffer를 clean up하지 못함
ExitThread에서 Thread에 생성된 static buffer를 clean up하지 못하므로 memory leak이 발생함(70~80byte)
그런데 실제로 thread-safe 여부에 대해서는 언급은 없음
thread 마다 고유의 static buffer를 생성하기 때문에 서로 침범을 하거나 critical section문제는 없을 것 같음
CreateThread은 사용하지 않기를 절대적으로 권고하지만, 사용했다고 해서 thread관련 문제가 발생하지는 않음
(MSDN에 MS VC++ 1.0부터 적용되는 내용이라는 걸 보아 문제는 안된다고 거의 말할 수 있음)
2. _beginthreadex :
_beginthread의 버그를 수정
CRT함수들에 대해 문제없이 사용가능함
내부적으로는 CreateThread를 이용하여 구현되어 있음
3. AfxBeginThread
MFC의 CWinThread클래스의 CreateThread를 호출
CWinThread::CreateThread는 내부적으로 _binthreadex로 구현되어있으므로 CRT함수들에 대해 문제없이 사용가능
참고자료
Creating Threads
CreateThread Function
_beginthread, _beginthreadex
AfxBeginThread
C Run-Time Libraries (CRT)
Description of using C Run-Time (CRT) functions and CreateThread ()
http://support.microsoft.com/default.aspx/kb/104641/en-us
'Tech & IT > 프로그래밍' 카테고리의 다른 글
C++에서 this에 대해 알아보자 (0) | 2009.12.10 |
---|---|
functor를 이용한 함수 매크로 (0) | 2009.12.09 |
fopen(CRT) 사용시 멀티스레드(multithread)문제? (0) | 2009.12.01 |
멀티스레드에서 모니터의 개념 (0) | 2009.11.20 |
C++ BITFIELDS 에 대해.. 이런거군. (0) | 2009.11.11 |