beginthreadex c++

C++中beginthreadex怎么使用

小亿
104
2023-08-09 09:12:54
栏目: 编程语言

在C++中,_beginthreadex函数可以用于创建一个新的线程。

首先,需要包含头文件process.h,然后调用_beginthreadex函数来创建线程。

函数原型如下:

unsigned int _beginthreadex(
void *security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);

参数说明:

下面是一个使用_beginthreadex函数创建一个新线程的示例代码:

#include <iostream>
#include <process.h>
unsigned __stdcall MyThreadFunc(void* data)
{
int* num = static_cast<int*>(data);
std::cout << "Thread started with data: " << *num << std::endl;
// 执行线程的任务
// ...
_endthreadex(0); // 结束线程
return 0;
}
int main()
{
int threadData = 1234;
unsigned threadID;
uintptr_t handle = _beginthreadex(NULL, 0, &MyThreadFunc, &threadData, 0, &threadID);
if (handle != -1)
{
std::cout << "Thread created with ID: " << threadID << std::endl;
// 等待线程结束
WaitForSingleObject((HANDLE)handle, INFINITE);
CloseHandle((HANDLE)handle);
}
else
{
std::cout << "Failed to create thread." << std::endl;
}
return 0;
}

在示例中,MyThreadFunc 函数是新线程的入口点函数,接收一个指针作为参数。在主函数中,使用_beginthreadex函数创建一个新线程,并传递threadData作为参数。创建成功后,可以使用WaitForSingleObject函数等待线程结束,然后关闭线程句柄。

需要注意的是,_beginthreadex函数返回的线程句柄需要使用CloseHandle函数显式地关闭,以避免资源泄露。

0
看了该问题的人还看了