使用win32核心API实现线程调用
时间: 2023-05-29 22:06:52 浏览: 97
1. 首先需要引入Windows.h头文件。
2. 定义线程函数,即线程要执行的任务。线程函数的参数为LPVOID类型,即void*类型的指针,可以使用强制类型转换将参数转换为需要的类型。
3. 创建线程,使用CreateThread函数,该函数的参数为线程属性、堆栈大小、线程函数、线程参数和创建标志。函数返回线程句柄,可以使用该句柄进行线程操作。
4. 等待线程结束,使用WaitForSingleObject函数,该函数的参数为线程句柄和等待时间。如果等待时间为INFINITE,则表示一直等待直到线程结束。
5. 关闭线程句柄,使用CloseHandle函数,该函数的参数为线程句柄。
下面是一个简单的示例代码:
```c++
#include <Windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
int nCount = *(int*)lpParam;
for (int i = 0; i < nCount; i++)
{
cout << "Thread " << GetCurrentThreadId() << " count " << i << endl;
Sleep(1000);
}
return 0;
}
int main()
{
const int nCount = 5;
HANDLE hThread = CreateThread(NULL, 0, ThreadProc, &nCount, 0, NULL);
if (hThread == NULL)
{
cerr << "CreateThread failed, error code: " << GetLastError() << endl;
return 1;
}
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
return 0;
}
```
该程序创建一个新线程,在新线程中执行一个简单的计数任务。主线程等待新线程结束后退出。