2、Window操作系统通过CreateThread系统调用创建线程,查看线程创建的参数及返回值信息通过代码实现
时间: 2023-08-22 11:06:34 浏览: 114
以下是一个使用CreateThread函数创建线程的示例代码,包括线程参数和返回值的获取:
```c++
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI ThreadFunc(LPVOID lpParam) {
// 线程函数的代码
cout << "This is a new thread." << endl;
return 0;
}
int main() {
HANDLE hThread;
DWORD dwThreadId;
// 创建线程
hThread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, &dwThreadId);
if (hThread == NULL) {
// 创建线程失败
cout << "CreateThread failed with error code " << GetLastError() << endl;
return 1;
}
// 等待线程结束
WaitForSingleObject(hThread, INFINITE);
// 获取线程返回值
DWORD dwExitCode;
GetExitCodeThread(hThread, &dwExitCode);
// 输出线程返回值
cout << "Thread exit code is " << dwExitCode << endl;
// 关闭线程句柄
CloseHandle(hThread);
return 0;
}
```
在上面的示例代码中,CreateThread函数的第一个参数设置为NULL,表示线程对象不可继承;第二个参数设置为0,表示使用默认堆栈大小;第三个参数设置为ThreadFunc,表示线程函数的地址;第四个参数设置为NULL,表示线程函数没有参数;第五个参数是一个指向线程标识符的指针,用于返回新线程的标识符。如果CreateThread函数返回NULL,则说明创建线程失败,可以通过GetLastError函数获取错误码。
在等待线程结束后,可以使用GetExitCodeThread函数获取线程的返回值。需要注意的是,线程函数返回的值可以通过ExitThread函数传递给这个函数,如果线程函数没有显式调用ExitThread函数,则返回值为0。
阅读全文