_beginthreadex创建的线程怎么推出
时间: 2023-07-16 18:14:53 浏览: 127
采用_beginthreadex创建多线程
5星 · 资源好评率100%
使用`_endthreadex`函数可以结束一个由`_beginthreadex`创建的线程。
`_endthreadex`函数可以传递一个退出码作为参数,并将其传递给`_endthreadex`的调用者。如果没有传递退出码,则会默认传递0。
以下是一个简单的示例代码,演示如何使用`_beginthreadex`和`_endthreadex`来创建和退出线程:
```c++
#include <iostream>
#include <windows.h>
#include <process.h>
unsigned int __stdcall myThread(void* arg)
{
std::cout << "Thread started." << std::endl;
// 线程执行的代码
std::cout << "Thread exiting." << std::endl;
// 传递退出码并退出线程
_endthreadex(0);
}
int main()
{
// 创建线程
HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, myThread, NULL, 0, NULL);
if (hThread == NULL)
{
std::cerr << "Failed to create thread." << std::endl;
return 1;
}
// 等待线程结束并获取退出码
DWORD exitCode;
if (WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0 &&
GetExitCodeThread(hThread, &exitCode))
{
std::cout << "Thread exited with code " << exitCode << "." << std::endl;
}
else
{
std::cerr << "Failed to get thread exit code." << std::endl;
}
// 关闭线程句柄
CloseHandle(hThread);
return 0;
}
```
在这个示例中,`myThread`函数是由`_beginthreadex`创建的线程执行的函数。在函数中,我们可以编写线程的实际代码。当线程完成其工作并准备退出时,我们使用`_endthreadex`来传递退出码并退出线程。
在主函数中,我们使用`WaitForSingleObject`等待线程结束,并使用`GetExitCodeThread`获取线程的退出码。最后,我们使用`CloseHandle`关闭线程句柄,以确保线程资源被正确释放。
阅读全文