_beginthreadex
是一個用于創建線程的函數,在C++中使用,其聲明如下:
uintptr_t _beginthreadex(
void* security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void* ),
void* arglist,
unsigned initflag,
unsigned* thrdaddr
);
參數說明如下:
security
:一個指向線程安全屬性的指針,通常設置為NULL
。stack_size
:以字節為單位指定線程堆棧的大小,默認為0,表示使用默認大小。start_address
:線程函數的地址,這個函數會在新線程中被調用。arglist
:傳遞給線程函數的參數。initflag
:創建線程的標志,可以是0或CREATE_SUSPENDED。thrdaddr
:指向接收線程標識的無符號整數的指針。_beginthreadex
函數會創建一個新的線程,并返回一個線程句柄。這個線程句柄可以用于操作和管理這個線程,比如等待線程結束、終止線程等。在使用完線程句柄后,需要調用CloseHandle
函數釋放資源。
一個簡單的使用示例:
#include <iostream>
#include <windows.h>
#include <process.h>
unsigned __stdcall MyThread(void* arg)
{
int* num = (int*)arg;
std::cout << "This is thread " << *num << std::endl;
return 0;
}
int main()
{
HANDLE hThread;
unsigned threadID;
int threadArg = 1;
hThread = (HANDLE)_beginthreadex(NULL, 0, &MyThread, &threadArg, 0, &threadID);
if (hThread == NULL)
{
std::cout << "Failed to create thread" << std::endl;
return 1;
}
// 等待線程結束
WaitForSingleObject(hThread, INFINITE);
// 關閉線程句柄
CloseHandle(hThread);
return 0;
}
上述示例中,_beginthreadex
函數用于創建一個線程,傳遞線程函數MyThread
的地址和參數threadArg
。然后使用返回的線程句柄 hThread
等待線程結束,并在結束后關閉線程句柄。