관리 메뉴

드럼치는 프로그래머

[TCP/IP] CreateThread() 본문

★─Programing/☆─TCP IP

[TCP/IP] CreateThread()

드럼치는한동이 2008. 5. 9. 15:48

쓰레드도 커널에 의해서 생성되는 리소스이므로 커널 오브젝트가 생성될 것이고 함수호출이 끝나면 커널 오브젝트를 의미하는 핸들이 리턴될 것이다.


#include <windows.h>


HANDLE CreateThread(

LPSECURITY_ATTRIBUTES    lpThreadAttributes,                 // Security Descriptor

SIZE_T                                dwStackSize,                        // initial stack size

LPTHREAD_START_ROUTINE  lpStartAddress,                     // thread function

LPVOID                                lpParameter,                         // thread argument

DWORD                                dwCreationFlags,                  // creation option

LPDWORD                            lpThreadId                            // thread identifier


- lpThreadAttributes : 생성하는 쓰레드의 보안에 관련된 설정을 위해 필요한 옵션이다.

  디폴트(default)보안 설정을 위해서 NULL포인터를 전달한다.

- dwStackSize : 쓰레드를 생성하는 경우, 모든 메시지 공간은 공유하되 스택 공간은

  독립적으로 생성된다. 따라서 쓰레드 생성 시 요구되는 스택의 크기를 인자로 전달한다.

  0을 전달할 경우 디폴트로 설정되어 있는 스택의 크기를 할당받는다.

- lpStartAddress : 쓰레드에 의해 호출되는 함수의 포인터를 인자로 전달한다.

- lpParameter : lpStartAddress가 가르키는 함수 호출 시, 전달할 인자를 지정해 준다.

- dwCreationFlags : 새로운 쓰레드 생성 이후에 바로 실행 가능한 상태가 되느냐, 아니면

   대기 상태로 들어가느냐를 결정하는 요소이다. 그리 중요한 요소는 아니며 0을 전달할 경우

   바로 실행 가능한 상태가 된다. 우리는 0을 전달하면 충분하다.

 - lpThreadId : 쓰레드 생성 시 쓰레드의 ID가 리턴되는데, 이를 저장하기 위한 변수의 포인터

   이다.


실제로 신경써 줄 부분은 lpStartAddress,lpParameter 두 가지뿐이며 나머지는 디폴트 값

혹은 NULL로 전달한다.

[출처] CreateThread()|작성자 꽁이

Comments