2008. 10. 3. 22:18

[강의정리] 윈도우에서 Thread 생성할 수 있는 API는 어떤것이 있나?

출처 : 신경준씨 사외교육 http://blog.naver.com/process3/20052147545

[1] CreateThread() API 사용

  순수한 Win32 API를 이용해서 프로그램을 작성할때 사용하는 API

  5개의 인자값을 가진다.

[2] _beginthread()/_beginthreadex() CRT를 사용 
 
CRT(C RunTime Library)를 사용할 경우에 이용하는 API
[3] AfxBeginThread() MFC 함수 이용

   MFC응용 프로그램을 만들때 사용하는 API이다AfxBeginThread() 함수 내부에서 CWinThread class를 이용해서 Thread를 생성한다. 그런데 CWinThread 클래스 내부에서는 _beginthreadex함수를 호출해서 스레드를 만든다.

 

=> 쓰레드 생성시 [2][3]의 방법은 결국 [1]함수를 호출하게 된다.

    일반적인 경우 [2]방법을 쓰고 mfc에서는 [3]을 주로 사용한다.

    CRT를 사용할 경우 CreateThread함수를 사용하게 되면

    DeadLock의 위험이 있기 때문이다.

 

=> Tread stack size의 디폴트로 1M가 잡히는 유저모드가 2GB이니까

     총 2000MB/ 1MB 이므로 2000개의 쓰레드 생성이 가능하다.

     이론적으로는 그러한데...실제로는 그렇게까지 생성할 일도 없고

     생성하는 것 자체가 문제가 있을 것이다.