CreateThread
CreateThread는 호출 프로세스의 가상 주소 공간 내에서 실행할 스레드를 생성합니다.
HANDLE CreateThread(
[in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes,
[in] SIZE_T dwStackSize,
[in] LPTHREAD_START_ROUTINE lpStartAddress,
[in, optional] __drv_aliasesMem LPVOID lpParameter,
[in] DWORD dwCreationFlags,
[out, optional] LPDWORD lpThreadId
);인자
설명
보편적인 값
lpThreadAttributes
스레드의 보안 속성
NULL
dwStackSize
생성할 스레드의 스택 크기
0(PE 기본 스택 크기 사용)
lpStartAddress
실행할 함수의 이름/주소
lpParameter
함수에 전달할 매개변수
dwCreationFlags
생성 플래그
0 : 즉시 실행 CREATE_SUSPENDED : 일시 정지
lpThreadId
스레드 ID를 받을 포인터
변수 지정
Example
#include <iostream>
#include <windows.h>
struct ThreadArgs {
int a;
int b;
};
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
ThreadArgs* args = static_cast<ThreadArgs*>(lpParam); // 인자를 C++ 타입으로 복원
std::cout << "a=" << args->a << ", b=" << args->b << std::endl; // 출력
delete args; // 할당했던 힙 데이터 반환
return 0;
}
int main()
{
ThreadArgs* args = new ThreadArgs{ 10, 20 }; // 새로운 스레드 변수 생성
HANDLE h = CreateThread(NULL, 0, ThreadProc, args, 0, NULL); // 스레드 생성
WaitForSingleObject(h, INFINITE); // 스레드 작업 결과 확인을 위해 대기
CloseHandle(h); // 핸들 정리
return 0;
}References
Last updated